/// <summary>
        ///     Parse constant value string and set representation based on type
        /// </summary>
        /// <param name="value">     expressed as a String </param>
        /// <param name="primitiveType"> that this is supposed to be </param>
        /// <returns> a new <seealso cref="PrimitiveValue" /> for the value. </returns>
        public static PrimitiveValue Parse(string value, PrimitiveType primitiveType)
        {
            switch (primitiveType.Type)
            {
                case SbePrimitiveType.Char:
                    if (value.Length > 1)
                    {
                        throw new ArgumentException("Constant char value malformed: " + value);
                    }
                    return new PrimitiveValue(byte.Parse(value), 1);

                case SbePrimitiveType.Int8:
                    return new PrimitiveValue(Convert.ToInt64(value), 1);

                case SbePrimitiveType.Int16:
                    return new PrimitiveValue(Convert.ToInt64(value), 2);

                case SbePrimitiveType.Int32:
                    return new PrimitiveValue(Convert.ToInt64(value), 4);

                case SbePrimitiveType.Int64:
                    return new PrimitiveValue(Convert.ToInt64(value), 8);

                case SbePrimitiveType.UInt8:
                    return new PrimitiveValue(Convert.ToInt64(value), 1);

                case SbePrimitiveType.UInt16:
                    return new PrimitiveValue(Convert.ToInt64(value), 2);

                case SbePrimitiveType.UInt32:
                    return new PrimitiveValue(Convert.ToInt64(value), 4);

                case SbePrimitiveType.UInt64:
                    // TODO: not entirely adequate, but then again, Java doesn't have unsigned 64-bit integers...
                    // TODO to fix in .NET
                    return new PrimitiveValue(Convert.ToInt64(value), 8);

                case SbePrimitiveType.Float:
                    return new PrimitiveValue(Convert.ToDouble(value), 4);

                case SbePrimitiveType.Double:
                    return new PrimitiveValue(Convert.ToDouble(value), 8);

                default:
                    throw new ArgumentException("Unknown PrimitiveType: " + primitiveType);
            }
        }
        /// <summary>
        ///     Parse constant value string and set representation based on type
        /// </summary>
        /// <param name="value">     expressed as a String </param>
        /// <param name="primitiveType"> that this is supposed to be </param>
        /// <returns> a new <seealso cref="PrimitiveValue" /> for the value. </returns>
        public static PrimitiveValue Parse(string value, PrimitiveType primitiveType)
        {
            switch (primitiveType.Type)
            {
                case SbePrimitiveType.Char:
                    if (value.Length > 1)
                    {
                        throw new ArgumentException("Constant char value malformed: " + value);
                    }
                    return new PrimitiveValue(byte.Parse(value), 1);

                case SbePrimitiveType.Int8:
                    return new PrimitiveValue(Convert.ToSByte(value), 1);

                case SbePrimitiveType.Int16:
                    return new PrimitiveValue(Convert.ToInt16(value), 2);

                case SbePrimitiveType.Int32:
                    return new PrimitiveValue(Convert.ToInt32(value), 4);

                case SbePrimitiveType.Int64:
                    return new PrimitiveValue(Convert.ToInt64(value), 8);

                case SbePrimitiveType.UInt8:
                    return new PrimitiveValue(Convert.ToByte(value), 1);

                case SbePrimitiveType.UInt16:
                    return new PrimitiveValue(Convert.ToUInt16(value), 2);

                case SbePrimitiveType.UInt32:
                    return new PrimitiveValue(Convert.ToUInt32(value), 4);

                case SbePrimitiveType.UInt64:
                    return new PrimitiveValue(Convert.ToUInt64(value), 8);

                case SbePrimitiveType.Float:
                    return new PrimitiveValue(Convert.ToDouble(value), 4);

                case SbePrimitiveType.Double:
                    return new PrimitiveValue(Convert.ToDouble(value), 8);

                default:
                    throw new ArgumentException("Unknown PrimitiveType: " + primitiveType);
            }
        }