code: public Limiter<T> putAll(Limiter<T> ls) {
          int i = 0;
          if (!ls.initial) {
              // sorted part
              for (; i < limit; i++) {
                  if (!put(ls.data[i]))
                      break;
              }
              i = limit;
          }
          for (; i < ls.size; i++) {
              put(ls.data[i]);
          }
          return this;
      }
docs: Merge other {@code Limiter} object into this (other object becomes unusable after that).
  
  @param ls other object to merge
  @return this object