sinterface IByteMemory64 { byte getByte(long idx); int getInt(long idx); //void setByte(long idx, byte val); long size(); default int[] readIntArray(long start, int len) { int[] a = new[len]; for i to len: a[i] = getInt(start+(((long) i) << 2)); ret a; } default int[] readIntArray(LongRange r) { ret r == null ? null : readIntArray(r.start, toInt(r.length())); } default long getLong(long idx) { ret twoIntsToLong(getInt(idx), getInt(idx+4)); } /*default void setLong(long idx, long val) { setInt(idx, firstIntFromLong(val)); setInt(idx+4, secondIntFromLong(val)); }*/ }