private void Multiplex()
{
Contract.Ensures(this.InnerBoundaryLastInstructionIndex.HasValue);
Contract.Ensures(this.InitializationVariables != null);
Contract.Ensures(this.InitializationInstructions != null);
Contract.Ensures(this.ConstructionVariables != null);
Contract.Ensures(this.ConstructionInstructions != null);
this.InnerSharedVariables = new List<VariableDefinition>();
this.InnerInitializationVariables = new List<VariableDefinition>();
this.InnerInitializationInstructions = new List<Instruction>();
this.InnerConstructionVariables = new List<VariableDefinition>(this.Constructor.Body.Variables); // start with the assumption that all variables are construction variables
this.InnerConstructionInstructions = new List<Instruction>();
this.PopulateInitializationItemsAndFindBoundary();
this.PopulateConstructionItems();
}
/// <summary> /// Gets a multiplexed constructor. /// </summary> /// <param name="cloningContext">cloning context.</param> /// <param name="constructor">Constructor to multiplex.</param> /// <returns>Multiplexed constructor.</returns> public static MultiplexedConstructor Get(ICloningContext cloningContext, MethodDefinition constructor) { var multiplexer = new MultiplexedConstructor(cloningContext, constructor); multiplexer.Multiplex(); return(multiplexer); }