code: public TemplateModel wrap(Object obj) throws TemplateModelException {
      if (obj == null) { return super.wrap(null); }
      if (obj instanceof List<?>) { return new CollectionModel((Collection<?>) obj, this); }
      // 使得set等集合可以排序
      if (obj instanceof Collection<?>) { return new SimpleSequence((Collection<?>) obj, this); }
      if (obj instanceof Map<?, ?>) {
        if (altMapWrapper) {
          return new FriendlyMapModel((Map<?, ?>) obj, this);
        } else {
          return new MapModel((Map<?, ?>) obj, this);
        }
      }
      return super.wrap(obj);
    }
docs: 特殊包装set和map