public Pair<Boolean, T> offerReturnAll(T item, int incrementCount) {
    ListNode2<Counter<T>> counterNode = counterMap.get(item);
    boolean isNewItem = (counterNode == null);
    T droppedItem = null;
    if (isNewItem) {

      if (size() < capacity) {
        counterNode =
            bucketList
                .enqueue(new Bucket(0))
                .getValue()
                .counterList
                .add(new Counter<T>(bucketList.tail(), item));
      } else {
        Bucket min = bucketList.first();
        counterNode = min.counterList.tail();
        Counter<T> counter = counterNode.getValue();
        droppedItem = counter.item;
        counterMap.remove(droppedItem);
        counter.item = item;
        counter.error = min.count;
      }
      counterMap.put(item, counterNode);
    }

    incrementCounter(counterNode, incrementCount);

    return new Pair<Boolean, T>(isNewItem, droppedItem);
  }
@param item stream element (<i>e</i>)
@return Pair<isNewItem, itemDropped> where isNewItem is the return value of offer() and
    itemDropped is null if no item was dropped
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/approximate/StreamSummary.java