sinterface IIntMemory { int get(int idx); // idx = unsigned int default int read(int idx) { ret get(idx); } void set(int idx, int val); long size(); // in ints default int[] readArray(int start, int len) { int[] a = new[len]; for i to len: a[i] = get(start+i); ret a; } default long getLong(int idx) { ret twoIntsToLong(get(idx), get(idx+1)); } default void setLong(int idx, long val) { set(idx, firstIntFromLong(val)); set(idx+1, secondIntFromLong(val)); } default void ensureSize(int size) { unimplemented(); } }