struct Unshared(T)
{
private T value;
this(T v) shared { opAssign(v); }
T get() shared { return *cast(T*)&value; }
alias get this;
void opAssign(T v) shared { *cast(T*)&value=v; }
}
shared synchronized class A
{
private Unshared!(int[]) a;
private Unshared!SysTime t;
this(){ t=Clock.currTime; }
int[] f()
{
return a;
}
}