///////////////////////////////////////////////////////////////
  // serialization
  ///////////////////////////////////////////////////////////////
  private static SequencedFragment cloneBySerialization(SequencedFragment original)
      throws IOException {
    ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream();
    DataOutputStream dataOutput = new DataOutputStream(outputBuffer);
    original.write(dataOutput);
    dataOutput.close();

    SequencedFragment newFrag = new SequencedFragment();
    newFrag.readFields(new DataInputStream(new ByteArrayInputStream(outputBuffer.toByteArray())));

    return newFrag;
  }