code: protected final boolean isNoop(Convert<?, ?> convert) {
          Type sourceType = convert.getSourcePosition().getType();
          if (ParameterizedType.class.isInstance(sourceType) && convert.getSourcePosition().getValue() != null) {
              sourceType =
                  Types.narrowestParameterizedType(convert.getSourcePosition().getValue().getClass(),
                      (ParameterizedType) sourceType);
          }
          if (TypeUtils.isAssignable(sourceType, convert.getTargetPosition().getType())) {
              if (ParameterizedType.class.isInstance(convert.getTargetPosition().getType())) {
                  // make sure all type params of target position are accounted for by source before declaring it a noop:
                  final Class<?> rawTargetType = TypeUtils.getRawType(convert.getTargetPosition().getType(), null);
                  final Map<TypeVariable<?>, Type> typeMappings = TypeUtils.getTypeArguments(sourceType, rawTargetType);
  
                  for (TypeVariable<?> v : rawTargetType.getTypeParameters()) {
                      if (typeMappings.get(v) == null) {
                          return false;
                      }
                      if (typeMappings.get(v) instanceof TypeVariable<?>) {
                          return false;
                      }
                  }
              }
              return true;
          }
          return false;
      }
docs: Learn whether a {@link Convert} operation's source value is (already) an instance of its target type,
  
  @param convert
  @return boolean