static TypeSignature toTypeSignature(JavaType type) {
        if (type.isArrayType() || type.isCollectionLikeType()) {
            return TypeSignature.ofList(toTypeSignature(type.getContentType()));
        }

        if (type.isMapLikeType()) {
            final TypeSignature key = toTypeSignature(type.getKeyType());
            final TypeSignature value = toTypeSignature(type.getContentType());
            return TypeSignature.ofMap(key, value);
        }

        if (Optional.class.isAssignableFrom(type.getRawClass()) ||
            "scala.Option".equals(type.getRawClass().getName())) {
            return TypeSignature.ofOptional(
                    toTypeSignature(type.getBindings().getBoundType(0)));
        }

        return toTypeSignature(type.getRawClass());
    }
A {@link DocServicePlugin} implementation that supports the {@link AnnotatedService}.
core/src/main/java/com/linecorp/armeria/internal/server/annotation/AnnotatedDocServicePlugin.java