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;
 }