private <T> void parseSuggestions(final @NonNull T instance) {
        for (final Method method : instance.getClass().getMethods()) {
            final Suggestions suggestions = method.getAnnotation(Suggestions.class);
            if (suggestions == null) {
                continue;
            }
            if (!method.isAccessible()) {
                method.setAccessible(true);
            }

            final boolean valid = Iterable.class.isAssignableFrom(method.getReturnType())
                    || method.getReturnType().equals(Stream.class)
                    || method.getReturnType().equals(CompletableFuture.class)
                    || method.getReturnType().getSimpleName().equals("Sequence")
                    || method.getParameterCount() == 3; /* TODO(City): Fix this... */

            if (!valid) {
                throw new IllegalArgumentException(String.format(
                        "@Suggestions annotated method '%s' in class '%s' does not have the correct signature",
                        method.getName(),
                        instance.getClass().getCanonicalName()
                ));
            }

            try {

                this.manager.parserRegistry().registerSuggestionProvider(
                        this.processString(suggestions.value()),
                        this.suggestionProviderFactory.createSuggestionProvider(
                                instance,
                                method,
                                this.manager.parameterInjectorRegistry()
                        )
                );
            } catch (final Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
Maps the given {@code string} into a {@link Description}.

@param string description literal
@return the description
cloud-annotations/src/main/java/org/incendo/cloud/annotations/AnnotationParser.java