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: 
                  override this.VisitParameter(expr : ParameterExpression) =
                      defaultArg (transformer expr) (expr :> _)
  
                  override this.VisitRuntimeVariables(expr : RuntimeVariablesExpression) =
                      let vars = expr.Variables |> Seq.map this.VisitParameter |> Seq.cast<ParameterExpression>
                      let e = expr.Update(vars)
                      defaultArg (transformer e) (e :> _)
  
                  // cases
                  override this.VisitSwitch(expr : SwitchExpression) =
                      let value = this.Visit expr.SwitchValue
                      let cases = expr.Cases
                      let defaultBody = this.Visit expr.DefaultBody
                      let e = expr.Update(value, cases, defaultBody)
                      defaultArg (transformer e) (e :> _)
  
                  override this.VisitSwitchCase(expr : SwitchCase) =
                      let tests = this.Visit expr.TestValues
                      let body = this.Visit expr.Body
                      expr.Update(tests, body)
  
                  // handlers
                  override this.VisitTry(expr : TryExpression) =
                      let body = this.Visit expr.Body
                      let handlers = expr.Handlers            
                      let finallyExpr = this.Visit expr.Finally
                      let fault = this.Visit expr.Fault
                      let e = expr.Update(body, handlers, finallyExpr, fault)
  
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) =
  