public AnonymousDelegateRebuilder(DecompilationContext context, BlockStatement methodBodyBlock)
 {
     this.context         = context;
     this.methodBodyBlock = methodBodyBlock;
     //this.variableCount = context.MethodContext.LambdaVariablesCount;
     if (context.MethodContext.FieldToExpression == null)
     {
         /// Create the map, when first needed.
         context.MethodContext.FieldToExpression = new Dictionary <FieldDefinition, Expression>();
     }
     /// Use the passed by upper level map.
     this.fieldDefToAssignedValueMap = context.MethodContext.FieldToExpression;
     this.fieldVisitor        = new FieldReferenceVisitor(methodBodyBlock);
     this.variableCopyFinder  = new VariableCopyFinder(methodBodyBlock);
     this.assignmentsToRemove = new HashSet <Statement>();
     this.closuresArchive     = context.MethodContext.ClosureVariableToFieldValue;
 }
            public AnonymousDelegateRebuilder(DecompilationContext context, BlockStatement methodBodyBlock)
            {
                this.context = context;
                this.methodBodyBlock = methodBodyBlock;
				//this.variableCount = context.MethodContext.LambdaVariablesCount;
                if (context.MethodContext.FieldToExpression == null)
                {
                    /// Create the map, when first needed.
                    context.MethodContext.FieldToExpression = new Dictionary<FieldDefinition, Expression>();
                }
                /// Use the passed by upper level map.
                this.fieldDefToAssignedValueMap = context.MethodContext.FieldToExpression;
                this.fieldVisitor = new FieldReferenceVisitor(methodBodyBlock);
                this.variableCopyFinder = new VariableCopyFinder(methodBodyBlock);
                this.assignmentsToRemove = new HashSet<Statement>();
                this.closuresArchive = context.MethodContext.ClosureVariableToFieldValue;
            }