public object Clone()
        {
            IsomorphyInformation ii = new IsomorphyInformation();

            ii.CheckIsMatchedBit = CheckIsMatchedBit;
            ii.SetIsMatchedBit   = SetIsMatchedBit;
            if (PatternElementsToCheckAgainst != null)
            {
                ii.PatternElementsToCheckAgainst = new List <SearchPlanNode>(PatternElementsToCheckAgainst.Count);
                for (int i = 0; i < PatternElementsToCheckAgainst.Count; ++i)
                {
                    ii.PatternElementsToCheckAgainst.Add(PatternElementsToCheckAgainst[i]);
                }
            }
            if (GloballyHomomorphPatternElements != null)
            {
                ii.GloballyHomomorphPatternElements = new List <SearchPlanNode>(GloballyHomomorphPatternElements.Count);
                for (int i = 0; i < GloballyHomomorphPatternElements.Count; ++i)
                {
                    ii.GloballyHomomorphPatternElements.Add(GloballyHomomorphPatternElements[i]);
                }
            }
            ii.TotallyHomomorph  = TotallyHomomorph;
            ii.LockForAllThreads = LockForAllThreads;
            ii.Parallel          = Parallel;
            return(ii);
        }