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