anchor.diff:              member x.Var = v
   
           type UnaryExpression(op : UnaryOperation, e : Expr) =
  -            inherit DerivedExpression(ExpressionType.Unary, e.Type, [e])
  +            inherit DerivedExpression(ExpressionType.Unary, unaryOpResultType op e.Type, [e])
               member x.Operation = op
               member x.Operand = e
           
  
positive.code:     | Equal
      | NotEqual
  
  
  type UnaryOperation =
      | Negate
  
  
  type ExpressionType =
      | Custom = 0
  
negative.code: 
  
      let newId = { build = fun s -> { s with currentId = s.currentId + 1u}, s.currentId}
  
      let lastInstruction =
          { build = fun s ->
              s, (match s.instructions with | Snoc(_,i) -> Some i | Nil -> None)
          }
  
      let tryFindTypeId (t : Type) =
          { build = fun s ->
  