static string ChunkToString(Encoding encoding, object chunk)
{
AssertChunkObject(chunk);
if (chunk.GetType() == typeof(string)) return (string)chunk;
if (chunk.GetType() == typeof(byte[])) return encoding.GetString((byte[])chunk);
if (chunk.GetType() == typeof(PhpString)) return ((PhpString)chunk).ToString();
if (chunk.GetType() == typeof(char[])) return new string((char[])chunk);
throw new ArgumentException(chunk.GetType().ToString());
}