internal int CopyTo( int valueOffset, char[] buffer, int offset, int length ) {
if ( value == null ) {
Debug.Assert( valueStartPos != -1 );
Debug.Assert( chars != null );
int copyCount = valueLength - valueOffset;
if ( copyCount > length ) {
copyCount = length;
}
Buffer.BlockCopy( chars, ( valueStartPos + valueOffset ) * 2, buffer, offset * 2, copyCount * 2 );
return copyCount;
}
else {
int copyCount = value.Length - valueOffset;
if ( copyCount > length ) {
copyCount = length;
}
value.CopyTo( valueOffset, buffer, offset, copyCount );
return copyCount;
}
}