protected int[] FindPathes(IAtomContainer container, int searchDepth) { var hashes = new HashSet <int>(); var cache = new Dictionary <IAtom, List <IBond> >(); var buffer = new StringBuilder(); foreach (IAtom startAtom in container.Atoms) { var p = PathTools.GetLimitedPathsOfLengthUpto(container, startAtom, searchDepth, pathLimit); foreach (List <IAtom> path in p) { if (hashPseudoAtoms || !HasPseudoAtom(path)) { hashes.Add(EncodeUniquePath(container, cache, path, buffer)); } } } int pos = 0; int[] result = new int[hashes.Count]; foreach (var hash in hashes) { result[pos++] = hash; } return(result); }