docs: private boolean canMakeCopyUsing(
        ExecutableElement copyOfMethod, DeclaredType targetType, TypeMirror parameterType) {
      // We have a parameter type, for example Set<? extends T>, and we want to know if it can be
      // passed to the given copyOf method, which might for example be one of these methods from
      // ImmutableSet:
      //    public static <E> ImmutableSet<E> copyOf(Collection<? extends E> elements)
      //    public static <E> ImmutableSet<E> copyOf(E[] elements)
      // Additionally, if it can indeed be passed to the method, we want to know whether the result
      // (here ImmutableSet<? extends T>) is compatible with the property to be set.
      // We can't use Types.asMemberOf to do the substitution for us, because the methods in question
      // are static. So even if our target type is ImmutableSet<String>, if we ask what the type of
      // copyOf is in ImmutableSet<String> it will still tell us <T> Optional<T> (T).
      // Instead, we do the variable substitutions ourselves.
      return TypeVariables.canAssignStaticMethodResult(
          copyOfMethod, parameterType, targetType, typeUtils);
    }