let take_at_most t x =
      assert_positive "take_at_most" x;
      let old_level = t.level in
      t.level <- C.max C.zero (C.(-) old_level x);
      C.(-) old_level t.level