anchor.diff:  
           match stmt with
           // Remove `self = self`
  -        | Statement.Assign { Targets = [ Name {Id=Identifier("self")}]; Value = Name {Id=Identifier("self")}} -> None
  +        | Statement.Assign { Targets = [ Name {Id=Identifier(x)}]; Value = Name {Id=Identifier(y)}} when x = y -> None
           | Expr expr ->
               if hasNoSideEffects expr.Value then
                   None
  
positive.code:     let wrapExprInBlockWithReturn (e, stmts) =
          stmts @ [ Statement.return'(e) ]
  
      let makeArrowFunctionExpression (args: Arguments) (body: Statement list) : Expression * Statement list =
          let args =
              match args.Args with
              | [] -> Arguments.arguments(args=[ Arg.arg(Identifier("_unit")) ], defaults=[ Expression.none() ])
  
negative.code:         match value with
          | Function(args, body) ->
              let name = Some var.Name
              let args, body = transformFunction com ctx name args body
              makeArrowFunctionExpression name args body
          | _ ->
              com.TransformAsExpr(ctx, value)
  
  