@Override
  public long getId() {
    // read id before myNode to avoid returning changed id during concurrent dispose
    // (because myId is assigned before myNode in dispose)
    long id = myId;
    RangeMarkerTree.RMNode<?> node = myNode;
    if (node == null) {
      throw new IllegalStateException("Already disposed");
    }
    return id;
  }
@Override
  public long getId()