internal sealed override object ReadValue(EmberReader reader, out ParameterType?parameterType)
        {
            switch (reader.InnerNumber)
            {
            case InnerNumber.Boolean:
                parameterType = ParameterType.Boolean;
                return(reader.ReadContentsAsBoolean());

            case InnerNumber.Integer:
                parameterType = ParameterType.Integer;
                return(reader.ReadContentsAsInt64());

            case InnerNumber.Octetstring:
                parameterType = ParameterType.Octets;
                return(reader.ReadContentsAsByteArray());

            case InnerNumber.Real:
                parameterType = ParameterType.Real;
                return(reader.ReadContentsAsDouble());

            default:
                parameterType = ParameterType.String;
                return(reader.AssertAndReadContentsAsString());
            }
        }