@Override
  public List asList() {
    if (hasLimitIterator) {
      List returnList = null;
      if (base instanceof List) {
        int truncate = base.size() - limit;
        if (truncate > limit) {
          returnList = new ArrayList(this);
        } else {
          ListIterator li = ((List) base).listIterator(base.size());
          for (int j = 0; j < truncate; ++j) {
            li.previous();
            li.remove();
          }
          returnList = (List) base;
        }
      } else {
        returnList = new ArrayList(this);
      }
      return returnList;
    } else {
      return base instanceof List ? (List) base : new ArrayList(base);
    }
  }
no-arg constructor required for DataSerializable
geode-core/src/main/java/org/apache/geode/cache/query/internal/ResultsCollectionWrapper.java