anchor.diff:      /// for/in
       | For of string * Expr * Expr * option<Expr> * Expr
       /// var <identifier> = <expr> 
  -    | Assign of Name: string * Expr
  +    | Assign of Vars: seq<(Expr * Expr option)> * Body: Expr
   
       override expr.ToString() =
         match expr with
  
positive.code:     | Minus
      | LessThan
      | Multiply
  
      member op.Code =
        match op with
  
negative.code: 
        // Restore the unshadowed variable
        match oldVal with
        | Some oldVal -> namedValues.Add(varName, oldVal)
        | None -> ()
  
        // Restore the unshadowed variable.
        LLVM.ConstNull(LLVM.DoubleType())
      | Assign (Variable name, body) -> 
        let body = codegenExpr body
        let variable = 
          match Dictionary.tryFind name namedValues with
          | Some variable -> variable
          | None -> failwith "unkown variable name"
        do LLVM.BuildStore(builder, body, variable) |> ignore
        body
      | _ -> failwith "Assert false"
  
    let rec private codegenDecl =
      function
  