docs: public static TypeName resolveVariableTypeName(VariableElement variableElement,
        Messager messager) {
      // Resolve type
      if (variableElement.asType().getKind() == TypeKind.ERROR) {
        messager.printMessage(Kind.ERROR,
            "Couldn't resolve type "
                + variableElement.asType()
                + " for variable "
                + variableElement
                + ". If you are trying to inject a ComponentFactory inside a Component, please inject VueComponentFactory<MyComponent> instead.");
      }
  
      TypeName typeName = ClassName.get(variableElement.asType());
      if (typeName instanceof ParameterizedTypeName) {
        ParameterizedTypeName parameterizedTypeName = (ParameterizedTypeName) typeName;
        if (parameterizedTypeName.rawType.equals(ClassName.get(VueComponentFactory.class))) {
          return componentFactoryName((ClassName) parameterizedTypeName.typeArguments.get(0));
        }
      }
  
      return typeName;
    }