maybe we can have a write/read utility class for arrays like this or we specialize it in the SnapshotId class as two static methods since we now have it twice already here... I wonder if we can have this pattern:

```JAVA
interface Streamable extends Cloneable {
   ...
}

class StreamInput {
  public <T extends Streamable> T[] readArray(T prototype) {
     int n = readVInt();
     T[] retval = (T[]) new Object[n];
     for (int i = 0; i < retval.length; i++) {
        retval[i] = ((T)prototyp.clone()).readFrom(this);
     }
    return retval;
  }

}

```

just an idea :)