code: public void setProperty(String name, Object value) throws IllegalArgumentException, IllegalStateException {
  		if (name == null) {
  			throw new IllegalArgumentException("property name can not be null");
  		}
  		if (PROPERTY_SERIALIZER_INDENTATION.equals(name)) {
  			indentationString = (String) value;
  		} else if (PROPERTY_SERIALIZER_LINE_SEPARATOR.equals(name)) {
  			lineSeparator = (String) value;
  		} else if (PROPERTY_LOCATION.equals(name)) {
  			location = (String) value;
  		} else {
  			throw new IllegalStateException("unsupported property " + name);
  		}
  		writeLineSepartor = lineSeparator != null && lineSeparator.length() > 0;
  		writeIndentation = indentationString != null && indentationString.length() > 0;
  		// optimize - do not write when nothing to write ...
  		doIndent = indentationString != null && (writeLineSepartor || writeIndentation);
  		// NOTE: when indentationString == null there is no indentation
  		// (even though writeLineSeparator may be true ...)
  		rebuildIndentationBuf();
  		seenTag = false; // for consistency
  	}
docs: Sets the property.
  
  @param name the name
  @param value the value
  @throws IllegalArgumentException the illegal argument exception
  @throws IllegalStateException the illegal state exception