anchor.diff:  
       and toCExprS (e : Expr) : State<_, CExpr> =
           state {
  -
  +            //// ensure all types are used
  +            //let! __ = toCTypeS e.Type
               match e with
                   | ReducibleExpression e ->
                       return! toCExprS e
  
positive.code: 
          let useLocalFunction (key : obj) (f : FunctionDefinition) =
              State.custom (fun s ->
                  { s with usedFunctions = HMap.add key f s.usedFunctions }, f.Signature s.moduleState.backend
              )
  
          let useGlobalFunction (key : obj) (f : FunctionDefinition) =
              State.custom (fun s ->
                  match HMap.tryFind key s.moduleState.globalFunctions with
                      | Some signature ->
                          { s with usedGlobalFunctions = HSet.add signature s.usedGlobalFunctions }, signature.Signature s.moduleState.backend
                      | _ -> 
                          let signature = f.Signature s.moduleState.backend
                          { s with 
                              usedGlobalFunctions = HSet.add f s.usedGlobalFunctions
                              moduleState = { s.moduleState with globalFunctions = HMap.add key f s.moduleState.globalFunctions } 
  
negative.code:                     let! s = State.get
                      let signature = f.Signature s.moduleState.backend
                      let! body = toCStatementS true body
  
                      return CFunctionDef(signature, body)
  
                  | CompiledFunction(signature, body) ->
  