/// <summary>
 /// Instantiates a new PatternYielding object as a copy from the original yielding; for parallelization.
 /// </summary>
 public Object Clone()
 {
     PatternYielding yielding = new PatternYielding(Name, null, NeededNodes, NeededEdges, NeededVariables, NeededVariableTypes);
     yielding.originalYielding = originalYielding;
     yielding.originalSubpatternEmbedding = originalSubpatternEmbedding;
     yielding.ElementaryYieldings = new Yielding[ElementaryYieldings.Length];
     for(int i = 0; i < ElementaryYieldings.Length; ++i)
     {
         yielding.ElementaryYieldings[i] = ElementaryYieldings[i].Copy("");
     }
     return yielding;
 }
 /// <summary>
 /// Instantiates a new PatternYielding object as a copy from an original yielding, used for inlining.
 /// </summary>
 /// <param name="original">The original yielding to be copy constructed.</param>
 /// <param name="inlinedSubpatternEmbedding">The embedding which just gets inlined.</param>
 /// <param name="renameSuffix">The rename suffix to be applied to all the nodes, edges, and variables used.</param>
 public PatternYielding(PatternYielding original, PatternGraphEmbedding inlinedSubpatternEmbedding, string renameSuffix)
 {
     originalYielding = original;
     originalSubpatternEmbedding = inlinedSubpatternEmbedding;
     Name = original.Name + renameSuffix;
     ElementaryYieldings = new Yielding[original.ElementaryYieldings.Length];
     for(int i = 0; i < original.ElementaryYieldings.Length; ++i)
         ElementaryYieldings[i] = original.ElementaryYieldings[i].Copy(renameSuffix);
     NeededNodes = new String[original.NeededNodes.Length];
     for(int i = 0; i < original.NeededNodes.Length; ++i)
         NeededNodes[i] = original.NeededNodes[i] + renameSuffix;
     NeededEdges = new String[original.NeededEdges.Length];
     for(int i = 0; i < original.NeededEdges.Length; ++i)
         NeededEdges[i] = original.NeededEdges[i] + renameSuffix;
     NeededVariables = new String[original.NeededVariables.Length];
     for(int i = 0; i < original.NeededVariables.Length; ++i)
         NeededVariables[i] = original.NeededVariables[i] + renameSuffix;
     NeededVariableTypes = (VarType[])original.NeededVariableTypes.Clone();
 }