public Object read(ByteArrayBuffer buffer) {
   int size = buffer.readInt();
   int address = buffer.readInt();
   if (size > sizeLimit) {
     FreeSlotNode node = new FreeSlotNode(size);
     node.createPeer(address);
     if (Deploy.debug && Debug.xbytes) {
       debugCheckBuffer(buffer, node);
     }
     return node;
   }
   return null;
 }
 static final Tree removeGreaterOrEqual(FreeSlotNode a_in, TreeIntObject a_finder) {
   if (a_in == null) {
     return null;
   }
   int cmp = a_in._key - a_finder._key;
   if (cmp == 0) {
     a_finder._object = a_in; // the highest node in the hierarchy !!!
     return a_in.remove();
   }
   if (cmp > 0) {
     a_in._preceding = removeGreaterOrEqual((FreeSlotNode) a_in._preceding, a_finder);
     if (a_finder._object != null) {
       a_in._size--;
       return a_in;
     }
     a_finder._object = a_in;
     return a_in.remove();
   }
   a_in._subsequent = removeGreaterOrEqual((FreeSlotNode) a_in._subsequent, a_finder);
   if (a_finder._object != null) {
     a_in._size--;
   }
   return a_in;
 }
 final void createPeer(int a_key) {
   _peer = new FreeSlotNode(a_key);
   _peer._peer = this;
 }
 public Object shallowClone() {
   FreeSlotNode frslot = new FreeSlotNode(_key);
   frslot._peer = _peer;
   return super.shallowCloneInternal(frslot);
 }