anchor.diff:                      let e = Expression.Block(exprs')
                       defaultArg (transformer e) (e :> _)
   
  -                // transform
                   override this.VisitCatchBlock(expr : CatchBlock) =
  -                    let var    = this.Visit expr.Variable :?> ParameterExpression
  -                    let body   = this.Visit expr.Body
  -                    let filter = this.Visit expr.Filter
  -                    Expression.MakeCatchBlock(expr.Test, var, body, filter)
  +                    ExpressionTransformer.VisitCatchBlockWrapper(this, expr)
   
                   override this.VisitConditional(expr : ConditionalExpression) =
                       let ifTrue = this.Visit expr.IfTrue
  
positive.code: 
      module internal ExpressionTransformer =
  
          type private ExpressionTransformer (transformer : Expression -> Expression option) as self =
  
              inherit ExpressionVisitor() with
                  override this.VisitBinary(expr : BinaryExpression) =
  
negative.code:                     defaultArg (transformer e) (e :> _)
  
                  override this.VisitInvocation(expr : InvocationExpression) =
                      let expr'   = this.Visit expr.Expression
                      let args    = this.Visit expr.Arguments
                      let e       = expr.Update(expr', args)
                      defaultArg (transformer e) (e :> _)
  
                  override this.VisitLabel(expr : LabelExpression) =
  