code: @SuppressWarnings("unchecked")
      public <T, K extends T> K valueByUniqueDeclaredType(final Class<T> type) {
          return (K) uniqueTypePaths.stream()
                  .filter(it -> type.equals(it.getDeclaredType()))
                  .findFirst()
                  .map(ConfigPath::getValue)
                  .orElse(null);
      }
docs: Search value by unique type declaration.
  <pre>{@code class Config extends Configuration {
  SubOne sub1 = ...
  SubTwo sub2 = ...
  SubTwoExt sub3 = ...  // SubTwoExt extends SubTwo
  }}</pre>
  {@code valueByUniqueDeclaredType(SubOne.class) == <sub1>},
  {@code valueByUniqueDeclaredType(SubTwo.class) == <sub2>}
  {@code valueByUniqueDeclaredType(SubTwoExt.class) == <sub3>}
  <p>
  Note that direct declaration comparison used! For example, {@code valuesByType(SubTwo) == [<sub2>, <sub3>]}
  would consider sub2 and sub3 as the same type, but {@code valueByUniqueDeclaredType} will not!
  <p>
  Type declaration is not unique if somewhere (maybe in some sub-sub configuration object) declaration with
  the same type exists. If you need to treat uniqueness only by first path level, then write search
  function yourself using {@link #findAllRootPaths()} or {@link #findAllRootPathsFrom(Class)}.
  
  @param type required target declaration type
  @param <T>  value type
  @param <K>  actual expected sub type (may be the same)
  @return uniquely declared sub configuration object or null if declaration not found or value null