code: @SuppressWarnings("unchecked")
      public <T> List<? extends T> valuesByType(final Class<T> type) {
          return (List<? extends T>) findAllByType(type).stream()
                  .map(ConfigPath::getValue)
                  .filter(Objects::nonNull)
                  .collect(Collectors.toList());
  
      }
docs: Useful to resolve sub configuration objects.
  <pre>{@code class Config extends Configuration {
  SubOne sub1 = ...
  SubTwo sub2 = ...
  SubTwo sub2_1 = ...
  SubTwoExt sub2_2 = ... // SubTwoExt extends SubTwo
  }}</pre>
  {@code valuesByType(SubOne.class) == [<sub1>]}
  {@code valuesByType(SubTwo.class) == [<sub2>, <sub2_1>, <sub2_2>]}
  <p>
  Note that type matching is not exact: any extending types are also accepted. Type is compared with
  declaration type (inside configuration class).
  
  @param type type of required sub configuration objects
  @param <T>  value type
  @return found sub configurations without nulls (properties with null value)
  @see #valueByUniqueDeclaredType(Class) for uniqe objects access