src/main/java/com/github/fge/grappa/parsers/BaseParser.java
@Cached
    public Rule trieIgnoreCase(final Collection<String> strings)
    {
        final List<String> list = ImmutableList.copyOf(strings);

        final TrieBuilder builder = Trie.newBuilder();

        list.forEach(builder::addWord);

        return new CaseInsensitiveTrieMatcher(builder.build());
    }
@Cached
    public Rule trieIgnoreCase(final Collection<String> strings)
    {
        final List<String> list = ImmutableList.copyOf(strings);

        final TrieBuilder builder = Trie.newBuilder();

        list.forEach(builder::addWord);

        return new CaseInsensitiveTrieMatcher(builder.build());
    }
Match one string among many using a <a
href="http://en.wikipedia.org/wiki/Trie" target="_blank">trie</a>, case
insensitive version

<p>Duplicate elements will be silently eliminated.</p>

<p>Note that order of elements does not matter, and that this rule will
always trie (err, try) and match the <em>longest possible sequence</em>.
That is, if you build a rule with inputs "do" and "double" in this order
and the input text is "doubles", then "double" will be matched. However,
if the input text is "doubling" then "do" is matched instead.</p>

<p>Note also that the minimum length of strings in a trie is 1.</p>

@param strings the list of strings for this trie
@return a rule

@see CaseInsensitiveTrieMatcher