protected unsafe PosixResult TryRead(ArraySegment <byte> buffer)
 {
     // TODO: validate buffer
     fixed(byte *buf = buffer.Array)
     {
         return(IOInterop.Read(this, buf + buffer.Offset, buffer.Count));
     }
 }
 protected unsafe PosixResult TryRead(byte *buffer, int length)
 {
     return(IOInterop.Read(this, buffer, length));
 }