code: public String getProperty(Property property, String defaultValue) {
          String value = null;
  
          List<String> systemProps = property.getSystemPropertyNames();
  
          if (systemProps != null) {
              for (String sp : systemProps) {
                  value = System.getProperty(sp);
                  if (value != null) {
                      break;
                  }
              }
  
          }
  
          if (value == null) {
              List<String> envVars = property.getEnvironmentVariableNames();
              if (envVars != null) {
                  for (String ev : envVars) {
                      value = System.getenv(ev);
                      if (value != null) {
                          break;
                      }
                  }
              }
          }
  
          if (value == null && property.getPropertyName() != null) {
              value = implementationConfiguration.get(property.getPropertyName());
          }
  
          return value == null ? defaultValue : value;
      }
docs: Returns the value of the property.
  
  <p>If there is a system property with the name from {@link Property#getSystemPropertyNames()} ()}, then its value
  is returned, otherwise if the property defines an environment variable and that env variable exists, then its
  value is returned otherwise the value of a property with a name from {@link Property#getPropertyName()}
  from the values loaded using {@link Builder#withConfiguration(Map)} or
  {@link Builder#withConfiguration(Properties)} is returned.
  
  @param property the property to obtain
  @return the value or null if none found