code: public Map<String, Object> sub(Map<String, Object> data, String prefix, String exclusiveAttrNames,
        boolean stripPrefix) {
      Set<String> excludes = CollectUtils.newHashSet();
      if (Strings.isNotEmpty(exclusiveAttrNames)) {
        String[] exclusiveAttrs = Strings.split(exclusiveAttrNames, ",");
        for (int i = 0; i < exclusiveAttrs.length; i++) {
          excludes.add(exclusiveAttrs[i]);
        }
      }
      Map<String, Object> newParams = CollectUtils.newHashMap();
      for (final Map.Entry<String, Object> entry : data.entrySet()) {
        final String attr = entry.getKey();
        if ((attr.indexOf(prefix + ".") == 0) && (!excludes.contains(attr))) {
          newParams.put((stripPrefix ? attr.substring(prefix.length() + 1) : attr), get(data, attr));
        }
      }
      return newParams;
    }
docs: <p>
  sub.
  </p>
  
  @param data a {@link java.util.Map} object.
  @param prefix a {@link java.lang.String} object.
  @param exclusiveAttrNames a {@link java.lang.String} object.
  @param stripPrefix a boolean.
  @return a {@link java.util.Map} object.