code: protected Properties load(String name, String includePropertyName, Set<String> history) throws InvalidPropertiesFormatException, IOException{
  		if (history != null && history.contains(name)){	// to prevent looping
  			throw new IllegalArgumentException("Loop found when loading properties file: " + name);
  		}
  		Properties result = loadWithoutInclude(name);
  		if (result != null){
  			String includedResources = result.getProperty(includePropertyName);
  			if (includedResources != null){
  				result.remove(includePropertyName);
  				if (history == null){
  					history = new HashSet<String>();
  				}
  				history.add(name);
  				for (String includedName: includedResources.split(DELIMITERS)){
  					Properties p = load(includedName, includePropertyName, history);
  					if (p != null){
  						result.putAll(p);
  					}
  				}
  			}
  		}
  		return result;
  	}
docs: (Internal usage only) Load properties from resource, with handling of the inclusion.<br>
  （内部使用）从指定的资源中载入properties，处理包含关系。
  @param name	location of the properties file, which can ends with &quot;.*&quot;.<br>
  properties文件的位置，可以以&quot;.*&quot;结尾。
  @param includePropertyName	To override the default inclusion keyword.<br>
  如果不想使用缺省的包含属性关键字，可以在这里指定。
  @param history		names of the files that have been loaded before.
  @return	null if not found, otherwise return the loaded properties
  @throws IOException resource found, but error when reading
  @throws InvalidPropertiesFormatException resource found, but with wrong format