The counters coalesce the four actual states (Initial, Open, Buffering, Closed) into just Open and Buffering. All streams start in Buffering and are then moved to Open if the calls to Open, etc. return true, indicating the state was changed. We don't bother tracking Closed because it's terminal anyway.