To reduce template bloat declare implementation nontemplated:
```
void notify()
{
shared me=cast(shared)this;
me.notifyImpl();
}
void notify() shared
{
notifyImpl();
}
void notify2() shared @nogc
{
notifyImpl();
}
private void notifyImpl() shared @nogc
{
code...
}
```