code: public <T extends TypeDefinition> List<T> getTypes(Class<T> targetClass) {
          return types.values().stream()
                  .filter(targetClass::isInstance)
                  .map(targetClass::cast)
                  .collect(Collectors.toList());
      }
docs: Returns a list of types in the registry of that specified class
  
  @param targetClass the class to search for
  @param <T>         must extend TypeDefinition
  
  @return a list of types of the target class