public void CloseReader() {
var duplex = GetStream().BaseStream as DuplexStream;
if (duplex == null && _mode.CanWrite() || duplex != null && !_mode.CanRead()) {
throw RubyExceptions.CreateIOError("closing non-duplex IO for reading");
}
if (duplex != null) {
duplex.Reader.Close();
}
_mode = _mode.CloseRead();
if (_mode.IsClosed()) {
Close();
}
}