code: @SuppressWarnings("SimplifiableIfStatement")
      private List<OutputExtensionModel<?, ?>> filterType(Collection<OutputExtensionModel<?, ?>> outputExtensions,
                                                          OutputPluginModel<?, ?> outputPlugin) {
          BiPredicate<TypeToken<?>, TypeToken<?>> isAssignable = (first, second) -> {
              if (first == null) {
                  return second == null;
              } else if (second != null) {
                  return first.isAssignableFrom(second);
              } else {
                  return false;
              }
          };
          return outputExtensions.stream()
                  .filter(outputExtension ->
                          isAssignable.test(outputExtension.getArgumentType(), outputPlugin.getArgumentType()))
                  .filter(outputExtension ->
                          isAssignable.test(outputExtension.getReturnType(), outputPlugin.getReceivingType()))
                  .collect(Collectors.toList());
      }
docs: TODO: TEST!!!!