public IDisposable StartSession() { if (!CheckAndSetBusy()) throw new BusyException(); return new BusySession(this); }