code: public <T> Set<T> getBeansOfType(final Class<T> cls) {
          final Set<T> result = new HashSet<>();
          parent.ifPresent(parent -> result.addAll(parent.getBeansOfType(cls)));
          for (BeanProvider provider : beanCreators.values()) {
              final Class<?> typeOfBean = provider.resolveBeanType(this, dryRun);
              if (cls.isAssignableFrom(typeOfBean)) {
                  result.add(provider.getBean(this, dryRun));
              }
          }
          return result;
      }
docs: Returns all Beans of the given Type which have a 'is a'-Relation to the Class of the Parameter {@code cls}.
  The Scope of the Bean depends on the Configuration. It is possible
  that the {@link PostConstructible#onPostConstruct(BeanRepository)} Method is executed.
  
  @param cls    The Class of the Bean, used in the Configuration of the BeanRepository
  @param <T>    The Type of the Bean
  @see PostConstructible
  @return a constructed and full initialised Bean.