internal Emitter ToString(Emitter emitter)
        {
            if (Style == ScalarStyle.Hex)
            {
                switch (m_objectType)
                {
                case ScalarType.Byte:
                    return(emitter.WriteHex((byte)m_value));

                case ScalarType.Int16:
                    return(emitter.WriteHex((short)m_value));

                case ScalarType.UInt16:
                    return(emitter.WriteHex((ushort)m_value));

                case ScalarType.Int32:
                    return(emitter.WriteHex((int)m_value));

                case ScalarType.UInt32:
                    return(emitter.WriteHex((uint)m_value));

                case ScalarType.Int64:
                    return(emitter.WriteHex(m_value));

                case ScalarType.UInt64:
                    return(emitter.WriteHex(unchecked ((ulong)m_value)));

                case ScalarType.Single:
                    return(emitter.WriteHex((float)m_double));

                case ScalarType.Double:
                    return(emitter.WriteHex(m_double));

                case ScalarType.String:
                    return(emitter.Write(m_string));

                default:
                    throw new NotImplementedException(m_objectType.ToString());
                }
            }

            switch (m_objectType)
            {
            case ScalarType.UInt64:
                return(emitter.Write(unchecked ((ulong)m_value)));

            case ScalarType.Single:
                return(emitter.Write((float)m_double));

            case ScalarType.Double:
                return(emitter.Write(m_double));

            case ScalarType.String:
                return(emitter.Write(m_string));

            default:
                return(emitter.Write(m_value));
            }
        }