public void decRef() throws IOException {if (refCount.get() <= 0) {throw new IllegalStateException("this revision is already released");}final int rc = refCount.decrementAndGet();if (rc == 0) {boolean success = false;try {revision.release();success = true;} finally {if (!success) {refCount.incrementAndGet();}}} else if (rc < 0) {throw new IllegalStateException("too many decRef calls: refCount is " + rc + " after decrement");}}

public virtual void DecRef(){if (refCount <= 0){throw new InvalidOperationException("this revision is already released");}var rc = refCount.DecrementAndGet();if (rc == 0){bool success = false;try{Revision.Release();success = true;}finally{if (!success){refCount.IncrementAndGet();}}}else if (rc < 0){throw new InvalidOperationException(string.Format("too many decRef calls: refCount is {0} after decrement", rc));}}
