code: public boolean exists(String propertyName, boolean trueForSpecialProperties) {
          if (propertyName == null) {
              throw new IllegalArgumentException("Given object may not be null");
          }
          boolean normalProperty = accessorMap.containsKey(propertyName);
          return normalProperty || (trueForSpecialProperties &&
                  (getIdName() != null && getIdName().equals(propertyName) ||
                          getGeometryName() != null && getGeometryName().equals(propertyName)));
      }
docs: Returns whether a 'normal' property exists with a given name. A property a is said to exist
  if the underlying class contains a method A getA().
  <br>
  The id and geometry of the feature are not considered as normal properties. Depending on the value of the second
  parameter, the method will return true or false if the given propertyname corresponds with the id or geometryfield
  
  @param propertyName             the name of the property to check
  @param trueForSpecialProperties the answer to return if the given property corresponds with either the id or the
  geometry property of the feature
  @return whether a property with that name exists
  @throws IllegalArgumentException if the given propertyname is null