private void Recycle( Buffer buf ) {
// recycled buffers are kept as WeakReferences
if ( buf.recycledBuffer == null ) {
buf.recycledBuffer = new WeakReference( buf.buffer );
}
else {
buf.recycledBuffer.Target = buf.buffer;
}
#if DEBUG
for ( int i = 0; i < buf.buffer.Length; i++ ) {
buf.buffer[i] = (char)0xCC;
}
#endif
buf.buffer = null;
}