code: public PropertiesWriter append( final String key, final String value )
      {
          NullArgumentException.validateNotEmpty( key, "Key" );
          String valueToAdd = value;
          if( value == null )
          {
              valueToAdd = "";
          }
          Integer position = m_positions.get( key );
          List<String> values = m_values.get( key );
          if( values == null )
          {
              values = new ArrayList<String>();
              m_values.put( key, values );
          }
          values.add( valueToAdd );
          StringBuilder builder = new StringBuilder().append( key ).append( "=" );
          if( values.size() == 1 )
          {
              builder.append( valueToAdd );
          }
          else
          {
              builder.append( "\\\n" );
              String trail = null;
              for( String storedValue : values )
              {
                  if( trail != null )
                  {
                      builder.append( trail );
                  }
                  builder.append( storedValue );
                  trail = m_separator + "\\\n";
              }
          }
          if( position == null )
          {
              m_content.add( builder.toString() );
              m_positions.put( key, m_content.size() - 1 );
          }
          else
          {
              m_content.set( position, builder.toString() );
          }
          return this;
      }
docs: Appends a property to be written.
  
  @param key   key of property
  @param value value of property
  
  @return self for a fluent api
  
  @throws NullArgumentException if key is null or empty