public Object getPropertyValue(String pKey, Object pDefaultValue) {

    Object value = super.get(pKey);  // super.get() is EXTREMELEY IMPORTANT

    if (value != null) {
      return value;
    }
    if (defaults instanceof XMLProperties) {
      return (((XMLProperties) defaults).getPropertyValue(pKey));
    }
    return ((defaults != null) ? defaults.getProperty(pKey) : pDefaultValue);
  }
public Object getPropertyValue ( String pKey , Object pDefaultValue ) { Object value = super . get ( pKey ) ; if ( value != null ) { return value ; } if ( defaults instanceof XMLProperties ) { return ( ( ( XMLProperties ) defaults ) . getPropertyValue ( pKey ) ) ; } return ( ( defaults != null ) ? defaults . getProperty ( pKey ) : pDefaultValue ) ; }
Searches for the property with the specified key in this property list.
If the key is not found in this property list, the default property
list, and its defaults, recursively, are then checked. The method
returns the default value argument if the property is not found.

@param pKey the property key.
@param pDefaultValue the default value.

@return the value in this property list with the specified key value.

@see #getPropertyValue(String)
@see Properties#defaults