@API(status = API.Status.STABLE)
        static <C> @NonNull Simple<C> partialTokenMatches(final boolean ignoreCase) {
            return Simple.contextFree((suggestion, input) -> {
                final List<String> suggestionTokens = new CommandInputTokenizer(suggestion).tokenize();
                final List<String> inputTokens = new CommandInputTokenizer(input).tokenize();

                boolean passed = true;

                for (String inputToken : inputTokens) {
                    if (ignoreCase) {
                        inputToken = inputToken.toLowerCase(Locale.ROOT);
                    }

                    boolean foundMatch = false;

                    for (final Iterator<String> iterator = suggestionTokens.iterator(); iterator.hasNext();) {
                        final String suggestionToken = iterator.next();
                        final String suggestionTokenLower =
                                ignoreCase ? suggestionToken.toLowerCase(Locale.ROOT) : suggestionToken;
                        if (suggestionTokenLower.contains(inputToken)) {
                            iterator.remove();
                            foundMatch = true;
                            break;
                        }
                    }

                    if (!foundMatch) {
                        passed = false;
                        break;
                    }
                }

                return passed;
            });
        }
Filter that requires every token of input to be a partial or full match for a single corresponding token in the
suggestion.

@param ignoreCase whether to ignore case
@param <C>        command sender type
@return new filter
cloud-core/src/main/java/org/incendo/cloud/suggestion/FilteringSuggestionProcessor.java