docs: public void removeTickRangeObjectFromHashmap(TickRange tr) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "removeTickRangeObjectFromHashmap", new Object[] { tr });
  
          if (gapMap.isEmpty())
              return;
  
          synchronized (this) {
  
              if (oststream.getCompletedPrefix() >= _lastTickWhenStreamCreated) {
                  //if gap is filled then just clear the hashmap
                  gapMap.clear();
                  return;
              }
  
              if (gapMap.remove(tr) != null) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(tc, "Removing Tr object from Hashmap : "
                                      + Integer.toHexString(tr.hashCode()));
              } else {
                  // tr is not in HashMap tickRangeMap
                  // check in case this tr is the result of split of larger TR
                  Object[] trArray = gapMap.entrySet().toArray();
  
                  for (Object trFromHashmap : trArray) {
                      TickRange TrObjFromHashMap = ((Map.Entry<TickRange, Integer>) trFromHashmap)
                                      .getKey();
  
                      if (tr.startstamp == TrObjFromHashMap.startstamp) {
                          // The single TickRange object (either UNCOMMIT or VALUE) falls
                          // in exactly start stamp of TrObjFromHashMap
                          // go ahead and remove trFromHashmap from hashmap
                          gapMap.remove(TrObjFromHashMap);
                          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                              SibTr.debug(tc, "Removing Tr object from Hashmap : "
                                              + Integer.toHexString(tr.hashCode()));
                          break;
                      } else {
                          if ((TrObjFromHashMap.endstamp != Long.MAX_VALUE)
                              && ((tr.startstamp > TrObjFromHashMap.startstamp) && (tr.startstamp < TrObjFromHashMap.endstamp))) {
                              // The single TickRange object (either UNCOMMIT or VALUE)
                              // falls in tickRangeMap TickRange object
                              // go ahead and remove trFromHashmap from hashmap
                              gapMap.remove(TrObjFromHashMap);
                              if (TraceComponent.isAnyTracingEnabled()
                                  && tc.isDebugEnabled())
                                  SibTr.debug(tc, "Removing Tr object from Hashmap : "
                                                  + Integer.toHexString(tr.hashCode()));
                              break;
                          }
                      }
                  }
              }
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "removeTickRangeObjectFromHashmap");
          }
      }