code: public void load(final Reader r) throws IOException
  	{
  		try (BufferedReader in = new BufferedReader(r))
  		{
  			entries.clear();
  			vars.clear();
  
  			String line = in.readLine();
  			while (line != null)
  			{
  				// Parse the line
  
  				if (line.length() == 0)
  				{
  					entries.add(new BlankLine());
  				}
  				else
  				{
  					char c = line.charAt(0);
  
  					if (c == COMMENT_CHAR)
  					{
  						if (!line.startsWith(COMMENT_INST))
  						{ // Don't load instance comments
  							entries.add(new Comment(line.substring(1)));
  						}
  					}
  					else if (c == ' ')
  					{
  						// If it starts with a space let's call it a blank line
  						entries.add(new BlankLine());
  					}
  					else
  					{ // Name=Value pair
  						// TODO - handle escaped characters (notably, \= and \n)
  						final int equalsIndex = line.indexOf('=');
  
  						if (equalsIndex != -1)
  						{
  							String name = line.substring(0, equalsIndex).trim();
  							String value = line.substring(equalsIndex + 1);
  
  							NameValuePair nvp = new NameValuePair(name, value);
  							if (vars.containsKey(nvp.name))
  							{
  								log.warn("{load} duplicate entry '" + nvp.name + "': overwriting previous value");
  							}
  
  							entries.add(nvp);
  							vars.put(caseSensitive ? nvp.name : nvp.name.toLowerCase(), nvp);
  						}
  						else
  						{
  							log.error("Malformed line in property file: " + line);
  						}
  					}
  				}
  
  				line = in.readLine();
  			}
  
  			hook_loaded();
  		}
  	}
docs: /////////////////////////////////