public class Container { /*@ private normal_behavior @ assignable \nothing; @*/ private /*@ helper @*/ Container() {} /*@ public normal_behavior @ assignable \nothing; @ ensures \fresh(\result); @*/ public static /*@ pure @*/ Container allocate() { Container c = new Container(); return c; } public static class ContainerUser { public void test() { Container c = Container.allocate(); } } }