public static Properties getProperties(PropertyFilter filter) { if (null == filter) { return System.getProperties(); } Properties ret = new Properties(); Properties props = System.getProperties(); for (String pName : props.stringPropertyNames()) { String pValue = props.getProperty(pName); Pair<String, String> p = Pair.of(pName, pValue); if (filter.accept(p)) { ret.put(p.getFirst(), p.getSecond()); } } return ret; }