public AppendableCachePath CopyCachePathToAppendable(PrefetchPath cachePath) { PrefetchPath[] children = cachePath.children; CHashSet <AppendableCachePath> clonedChildren = null; if (children != null) { clonedChildren = CHashSet <AppendableCachePath> .Create(children.Length); for (int a = children.Length; a-- > 0;) { clonedChildren.Add(CopyCachePathToAppendable(children[a])); } } AppendableCachePath clonedCachePath = new AppendableCachePath(cachePath.memberType, cachePath.memberIndex, cachePath.memberName); clonedCachePath.children = clonedChildren; return(clonedCachePath); }