Properties prop = this;  do { String value = (String) prop.get(key); if (value != null) return value; prop = prop.defaults; } while (prop != null); return defaultValue;
return getProperty(key, null);
  public String getProperty(String key, String defaultValue)  {    Properties prop = this;    // Eliminate tail recursion.    do      {        String value = (String) prop.get(key);        if (value != null)          return value;        prop = prop.defaults;      }    while (prop != null);    return defaultValue;  }