public static OperationTrie Create(IEnumerable <IOperation> operations) { OperationTrie trie = new OperationTrie(); foreach (IOperation operation in operations) { int tokenNumber = 0; foreach (IToken token in operation.Tokens) { trie.AddPath(token.Value, new OperationTerminal(operation, tokenNumber++, token.Length, token.Start, token.End)); } } return(trie); }