/// <summary> /// Finds the list of string that matches any of the patterns with the indices of each occurrence in sequence. /// </summary> /// <param name="patterns">List of patterns that needs to be searched in Sequence.</param> /// <param name="startIndex">Minimum index in Sequence at which match has to start.</param> /// <param name="ignoreCase"> /// if true ignore character casing while match. /// <remarks> /// Note that symbols in Sequence are always Upper case. /// </remarks> /// </param> /// <returns></returns> public IDictionary <string, IList <int> > FindMatches(IList <string> patterns, int startIndex = 0, bool ignoreCase = true) { if (PatternFinder == null) { PatternFinder = new BoyerMoore(); } return(PatternFinder.FindMatch( this, PatternConverter.GetInstanace(this.Alphabet).Convert(patterns).Values.SelectMany(pattern => pattern).ToList())); }