public object Clone(SearchOperationType searchOperationType) { // clone the condition as we may need to set the parallelized flag for it, while the original must stay untouched object ElementWithConditionCloned = Element is PatternCondition ? (Element as PatternCondition).Clone() : Element; SearchOperation so = new SearchOperation(searchOperationType, ElementWithConditionCloned, SourceSPNode, CostToEnd); so.Isomorphy = (IsomorphyInformation)Isomorphy.Clone(); so.ConnectednessCheck = (ConnectednessCheck)ConnectednessCheck.Clone(); so.Storage = Storage; so.StorageIndex = StorageIndex; so.IndexAccess = IndexAccess; so.NameLookup = NameLookup; so.UniqueLookup = UniqueLookup; so.Expression = Expression; return(so); }
public Object Clone() { SearchOperation so = new SearchOperation(Type, Element, SourceSPNode, CostToEnd); so.Isomorphy = (IsomorphyInformation)Isomorphy.Clone(); so.Storage = Storage; so.StorageIndex = StorageIndex; so.IndexAccess = IndexAccess; so.NameLookup = NameLookup; so.UniqueLookup = UniqueLookup; so.Expression = Expression; if (so.Element is PatternCondition) { // clone the condition as we may need to set the parallelized flag for it, while the original must stay untouched so.Element = (so.Element as PatternCondition).Clone(); } return(so); }