docs: protected Optional<TypeMirror> getFirstTypeArgument(TypeMirror type) {
          TypeMirror typeMirror = null;
  
          if (type instanceof DeclaredType) {
              DeclaredType declaredType = (DeclaredType) type;
              List<? extends TypeMirror> typeArguments = declaredType.getTypeArguments();
              if (CollectionUtils.isNotEmpty(typeArguments)) {
                  typeMirror = typeArguments.get(0);
              }
          }
          return Optional.ofNullable(typeMirror);
      }