Example:
```d
shared class Unshareable(T)
{
T value;
T castToUnshared()
{
synchronized(this)
{
return cast(T)value;
}
}
void castFromUnshared(T value2)
{
synchronized(this)
{
value=cast(shared)value2;
}
}
}
shared Unshareable!(int[][]) a;
unittest
{
int[][] b=a.castToUnshared();
a.castFromUnshared(b);
shared int[][] b2=a.value; //shared
}
```