docs: public T nextReady(long systemCurrentTimeMillis) {
          if (delayed.size() == 0) {
              return null;
          }
  
          // no ready objects
          if (delayed.firstKey() > systemCurrentTimeMillis) {
              return null;
          }
  
          Entry<Long, Object[]> entry = delayed.pollFirstEntry();
          Object[] values = entry.getValue();
  
          @SuppressWarnings("unchecked")
          T value = (T) values[0];
  
          // if this map entry had multiple values, put all but one
          // of them back
          if (values.length > 1) {
              int prevLength = values.length;
              values = Arrays.copyOfRange(values, 1, values.length);
              assert(values.length == prevLength - 1);
              delayed.put(entry.getKey(), values);
          }
  
          m_size--;
          return value;
      }