internal string SearchTreeTraversal(ProjectionContext pc, string val) { SearchResult result = new SearchResult(); foreach (var top in pc.CurrentAttributeStateSet.States) { SearchStructure st = new SearchStructure(); st = SearchStructure.BuildStructure(top, top, val, st, false, 0); if (st?.Result.FoundFlag == true) { if (result.FoundFlag == false) { result = st.Result; } else if (result.FoundDepth > st?.Result.FoundDepth) { result = st.Result; } else if (result.FoundDepth == st?.Result.FoundDepth) { foreach (var newTops in st?.Result.Top) { result.Top.Add(newTops); } } } } return(result.FoundFlag ? GetResult(val, result) : string.Empty); }