method with_binder : 'a. binder -> 'a printer -> 'a printer =
    fun (x,xid) pp fmt data -> 
      let sigma0 = sigma in
      sigma <- VMAP.add x xid sigma ;
      try
        pp fmt data ;
        sigma <- sigma0 ;
      with error ->
        sigma <- sigma0 ;
        raise error