public Property addProperty(String name, Object value, PropertyListener l) { Property p = addProperty(name, value, value.getClass(), false); p.addPropertyListener(l); return p;
public Property addProperty(String name, Object value) { if (value == null) throw new IllegalArgumentException("null value not allowed"); return addProperty(name, value, value.getClass(), true);
  public Property addProperty(String name, Object value, PropertyListener l) {    Property p = addProperty(name, value, value.getClass(), false);    p.addPropertyListener(l);    return p;  }