private void ToStringCore(TextWriter writer, int depth)
        {
            var name          = this.GetType().Name;
            int indexOfAgusam = name.IndexOf('`');
            int nameLength    = indexOfAgusam < 0 ? name.Length : indexOfAgusam;

            for (int i = 0; i < nameLength; i++)
            {
                writer.Write(name[i]);
            }

            writer.Write("For");
            writer.WriteLine(typeof(T));

            for (int i = 0; i < this._memberSerializers.Length; i++)
            {
                ExpressionDumper.WriteIndent(writer, depth + 1);
                writer.Write(this._memberNames[i]);
                writer.Write(" : ");
                var expressionSerializer = this._memberSerializers[i] as IExpressionMessagePackSerializer;
                if (expressionSerializer != null)
                {
                    expressionSerializer.ToString(writer, depth + 2);
                }
                else
                {
                    writer.Write(this._memberSerializers[i]);
                }

                writer.WriteLine();
            }
        }
		private void ToStringCore( TextWriter writer, int depth )
		{
			var name = this.GetType().Name;
			int indexOfAgusam = name.IndexOf( '`' );
			int nameLength = indexOfAgusam < 0 ? name.Length : indexOfAgusam;
			for ( int i = 0; i < nameLength; i++ )
			{
				writer.Write( name[ i ] );
			}

			writer.Write( "For" );
			writer.WriteLine( typeof( T ) );

			ExpressionDumper.WriteIndent( writer, depth + 1 );
			writer.Write( "PackToCore : " );
			new ExpressionDumper( writer, depth + 1 ).Visit( this._packToCoreExpression );
			writer.WriteLine();

			ExpressionDumper.WriteIndent( writer, depth + 1 );
			writer.Write( "UnpackToCore : " );
			new ExpressionDumper( writer, depth + 1 ).Visit( this._unpackToCoreExpression );
		}