let take t x = assert_positive "take" x; let new_level = C.(-) t.level x in if C.(<) new_level C.zero then `Unable else begin t.level <- new_level; `Taken end