protected override void Merge(ILambdaExpression accumulatorLambda, ILambdaExpression lambda)
        {
            var declaredElement = lambda.ParameterDeclarations[0].DeclaredElement;

            var replacement = accumulatorLambda.BodyExpression;

            var toReplace = new LocalList <IReferenceExpression>();

            foreach (var referenceExpression in lambda.BodyExpression.Descendants <IReferenceExpression>())
            {
                var currentElement = referenceExpression.Reference.Resolve().DeclaredElement;

                if (declaredElement.Equals(currentElement) ||
                    referenceExpression.QualifierExpression == null &&
                    referenceExpression.NameIdentifier.Name == declaredElement.ShortName)
                {
                    toReplace.Add(referenceExpression);
                }
            }

            for (int i = 0; i < toReplace.Count; i++)
            {
                toReplace[i].ReplaceBy(replacement);
            }

            accumulatorLambda.SetBodyExpression(lambda.BodyExpression);
        }
    protected override void Merge(ILambdaExpression accumulatorLambda, ILambdaExpression lambda)
    {
      var declaredElement = lambda.ParameterDeclarations[0].DeclaredElement;

      var replacement = accumulatorLambda.BodyExpression;

      var toReplace = new LocalList<IReferenceExpression>();

      foreach (var referenceExpression in lambda.BodyExpression.Descendants<IReferenceExpression>())
      {
        var currentElement = referenceExpression.Reference.Resolve().DeclaredElement;

        if (declaredElement.Equals(currentElement) ||
            referenceExpression.QualifierExpression == null && 
            referenceExpression.NameIdentifier.Name == declaredElement.ShortName)
        {
          toReplace.Add(referenceExpression);
        }
      }

      for (int i = 0; i < toReplace.Count; i++)
      {
        toReplace[i].ReplaceBy(replacement);
      }

      accumulatorLambda.SetBodyExpression(lambda.BodyExpression);
    }
 protected override void Merge(ILambdaExpression accumulatorLambda, ILambdaExpression lambda)
 {
   var newBody = Factory.CreateExpression("$0 && $1", accumulatorLambda.BodyExpression, lambda.BodyExpression);
   accumulatorLambda.SetBodyExpression(newBody);
 }
        protected override void Merge(ILambdaExpression accumulatorLambda, ILambdaExpression lambda)
        {
            var newBody = Factory.CreateExpression("$0 && $1", accumulatorLambda.BodyExpression, lambda.BodyExpression);

            accumulatorLambda.SetBodyExpression(newBody);
        }