public class Block {
private /*@ spec_public @*/ int[] contents;
/*@ public normal_behavior
@ ensures \fresh(contents);
@*/
public Block() { contents = new int[10]; }
/*@ public normal_behavior
@ requires cont != null;
@ assignable contents;
@ ensures contents == cont;
@*/
public Block(int[] cont) {
contents = cont;
}
/*@ public normal_behavior
@ requires size >= 0;
@ ensures \fresh(\result);
@ ensures \fresh(\result.contents);
@*/
public static Block allocate(int size) {
int[] cont = new int[size];
return new Block(cont);
}
}