Repository: open-telemetry/opentelemetry-java
File: api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java (Java)

Code before:
   * @throws DeclarativeConfigException if the property is not a mapping
   */
  @Nullable
  DeclarativeConfigProperties getStructured(String name);

  /**
   * Returns a list of {@link DeclarativeConfigProperties} configuration property.
   *
   * @return a map-valued configuration property, or {@code defaultValue} if {@code name} has not
   *     been configured
   * @throws DeclarativeConfigException if the property is not a mapping
   */
  default DeclarativeConfigProperties getStructured(
      String name, DeclarativeConfigProperties defaultValue) {
    return defaultIfNull(getStructured(name), defaultValue);
  }

  /**
   * Returns a {@link DeclarativeConfigProperties} configuration property.
   *
   * @return a map-valued configuration property, or an empty {@link DeclarativeConfigProperties}
   *     instance if {@code name} has not been configured
   * @throws DeclarativeConfigException if the property is not a mapping
   */
  default DeclarativeConfigProperties get(String name) {
    return defaultIfNull(getStructured(name), empty());
  }

  /**
   * Returns a list of {@link DeclarativeConfigProperties} configuration property.
   *
   * @return a list of map-valued configuration property, or {@code null} if {@code name} has not
   *     been configured
   * @throws DeclarativeConfigException if the property is not a sequence of mappings
   */
  @Nullable
  List<DeclarativeConfigProperties> getStructuredList(String name);

  /**
   * Returns a list of {@link DeclarativeConfigProperties} configuration property.
   *
   * @return a list of map-valued configuration property, or {@code defaultValue} if {@code name}
   *     has not been configured
   * @throws DeclarativeConfigException if the property is not a sequence of mappings
   */
  default List<DeclarativeConfigProperties> getStructuredList(
      String name, List<DeclarativeConfigProperties> defaultValue) {
    return defaultIfNull(getStructuredList(name), defaultValue);
  }

  /**

Review comment (suggestion):
I think helps to show what it's a convenience for:

```suggestion
    return getStructured(name, empty());
```

Code after:
   * @throws DeclarativeConfigException if the property is not a mapping
   */
  @Nullable
  DeclarativeConfigProperties getStructured(String name);

  /**
   * Returns a list of {@link DeclarativeConfigProperties} configuration property.
   *
   * @return a map-valued configuration property, or {@code defaultValue} if {@code name} has not
   *     been configured
   * @throws DeclarativeConfigException if the property is not a mapping
   */
  default DeclarativeConfigProperties getStructured(
      String name, DeclarativeConfigProperties defaultValue) {
    return defaultIfNull(getStructured(name), defaultValue);
  }

  /**
   * Returns a {@link DeclarativeConfigProperties} configuration property, or {@link #empty()} if a
   * property with {@code name} has not been configured.
   *
   * <p>This is syntactic sugar for the common operation of calling {@code
   * config.getStructured(name, empty())}. If you need to distinguish between a property being set
   * but empty vs. not set, use {@link #getStructured(String)}.
   *
   * @return a map-valued configuration property, or an empty {@link DeclarativeConfigProperties}
   *     instance if {@code name} has not been configured
   * @throws DeclarativeConfigException if the property is not a mapping
   */
  default DeclarativeConfigProperties get(String name) {
    return getStructured(name, empty());
  }

  /**
   * Returns a list of {@link DeclarativeConfigProperties} configuration property.
   *
   * @return a list of map-valued configuration property, or {@code null} if {@code name} has not
   *     been configured
   * @throws DeclarativeConfigException if the property is not a sequence of mappings
   */
  @Nullable
  List<DeclarativeConfigProperties> getStructuredList(String name);

  /**
   * Returns a list of {@link DeclarativeConfigProperties} configuration property.
   *
   * @return a list of map-valued configuration property, or {@code defaultValue} if {@code name}
   *     has not been configured
   * @throws DeclarativeConfigException if the property is not a sequence of mappings
   */
  default List<DeclarativeConfigProperties> getStructuredList(