code: public Properties getSubProperties(final String prefix, final boolean truncate) {
  		String cacheKey = truncate + prefix;
  		Properties sub = subcontextCache.get(cacheKey);
  
  		if (sub != null) {
  			// make a copy so users can't change.
  			Properties copy = new Properties();
  			copy.putAll(sub);
  			return copy;
  		}
  
  		sub = new Properties();
  
  		int length = prefix.length();
  
  		for (Map.Entry<String, Object> entry : backing.entrySet()) {
  
  			String key = entry.getKey();
  
  			if (key.startsWith(prefix)) {
  				// If we are truncating, remove the prefix
  				String newKey = key;
  
  				if (truncate) {
  					newKey = key.substring(length);
  				}
  
  				sub.setProperty(newKey, (String) entry.getValue());
  			}
  		}
  
  		subcontextCache.put(cacheKey, sub);
  
  		// Make a copy so users can't change.
  		Properties copy = new Properties();
  		copy.putAll(sub);
  
  		return copy;
  	}
docs: Returns a sub-set of the parameters contained in this configuration.
  
  @param prefix the prefix of the parameter keys which should be included.
  @param truncate if true, the prefix is truncated in the returned properties.
  @return the properties sub-set, may be empty.