docs: public static TypeName injectableType(TypeMirror type) {
      return type.accept(new SimpleTypeVisitor6<TypeName, Void>() {
        @Override public TypeName visitPrimitive(PrimitiveType primitiveType, Void v) {
          return box(primitiveType);
        }
  
        @Override public TypeName visitError(ErrorType errorType, Void v) {
          // Error type found, a type may not yet have been generated, but we need the type
          // so we can generate the correct code in anticipation of the type being available
          // to the compiler.
  
          // Paramterized types which don't exist are returned as an error type whose name is "<any>"
          if ("<any>".equals(errorType.toString())) {
            throw new CodeGenerationIncompleteException(
                "Type reported as <any> is likely a not-yet generated parameterized type.");
          }
  
          return ClassName.bestGuess(errorType.toString());
        }
  
        @Override protected TypeName defaultAction(TypeMirror typeMirror, Void v) {
          return TypeName.get(typeMirror);
        }
      }, null);
    }