public Object getProperty(String name) throws java.lang.IllegalArgumentException {
   if (name == null) {
     throw new IllegalArgumentException("Property not supported");
   }
   if (fPropertyManager.containsProperty(name)) return fPropertyManager.getProperty(name);
   throw new IllegalArgumentException("Property not supported");
 }
 public boolean isPropertySupported(String name) {
   if (name == null) {
     return false;
   } else {
     return fPropertyManager.containsProperty(name);
   }
 }
  public void setProperty(String name, Object value) throws java.lang.IllegalArgumentException {
    if (name == null || value == null || !fPropertyManager.containsProperty(name)) {
      throw new IllegalArgumentException("Property " + name + "is not supported");
    }
    if (name == Constants.REUSE_INSTANCE || name.equals(Constants.REUSE_INSTANCE)) {
      fReuseInstance = ((Boolean) value).booleanValue();
      if (DEBUG) System.out.println("fReuseInstance is set to " + fReuseInstance);

      // TODO: XMLStreamWriters are not Thread safe,
      // don't let application think it is optimizing
      if (fReuseInstance) {
        throw new IllegalArgumentException(
            "Property " + name + " is not supported: XMLStreamWriters are not Thread safe");
      }
    } else { // for any other property set the flag
      // REVISIT: Even in this case instance can be reused, by passing PropertyManager
      fPropertyChanged = true;
    }
    fPropertyManager.setProperty(name, value);
  }