code: public FulltextMatch setProperties(
                      final Collection<String> properties
                      )
      {
          if (properties == null  ||  properties.size() == 0) {
              clearProperties();
              return this;
          }
  
          synchronized (properties) {
              for (String  binding : properties) {
                  if (binding == null) {
                      throw new IllegalArgumentException( "null element" );
                  }
              }
  
              clearProperties();
              for (String  property : properties) {
                  addProperty( property );
              }
          }
  
          return this;
      }
docs: Sets the properties.
  First, the previous elements are cleared and all of
  the specified properties are appended.
  The properties are appended in the array order.
  
  @param   properties
  a list of properties.
  @throws  IllegalArgumentException
  if the specified array contains a null element.
  The previous list of properties are preserved.