code: public List<ConfigPath> findAllByType(final Class<?> type) {
          return paths.stream()
                  // do not allow search for all booleans or integers (completely meaningless)
                  .filter(it -> it.isCustomType() && type.isAssignableFrom(it.getDeclaredType()))
                  .collect(Collectors.toList());
      }
docs: Useful for searching multiple custom types.
  <pre>{@code class Config {
  SubConf field1;
  // just to show that value type taken into account
  Object field2 = new SubConfExt();
  }}</pre>
  {@code findAllByType(SubConf.class) == [filed1, field2]} because filed1 is declared with required type and
  field2 value is compatible with requested type.
  
  @param type type to search for
  @return all paths with the same or sub type for specified type or empty list