docs: Object resolveTypeReference(TypeMirror type) {
          Object result = Void.TYPE;
          if (type.getKind().isPrimitive()) {
              result = resolvePrimitiveTypeReference(type);
          } else if (type.getKind() == ARRAY) {
              ArrayType arrayType = (ArrayType) type;
              TypeMirror componentType = arrayType.getComponentType();
              if (componentType.getKind().isPrimitive()) {
                  result = classOfPrimitiveArrayFor(resolvePrimitiveTypeReference(componentType).getName());
              } else {
                  final TypeMirror erased = typeUtils.erasure(componentType);
                  final Element e = typeUtils.asElement(erased);
                  if (e instanceof TypeElement) {
                      result = resolveTypeReferenceForTypeElement((TypeElement) e) + "[]";
                  }
              }
          } else if (type.getKind() != VOID && type.getKind() != ERROR) {
              final TypeMirror erased = typeUtils.erasure(type);
              final Element element = typeUtils.asElement(erased);
              if (element instanceof TypeElement) {
                  TypeElement te = (TypeElement) element;
                  result = resolveTypeReferenceForTypeElement(te);
              }
          }
          return result;
      }