protected void ReadPrimitive()
            {
                MessagePackObject lastReadData = mUnpacker.LastReadData;

                if (lastReadData.IsNil)
                {
                    mReader.SetToken(JsonToken.Null, null);
                }
                else if (lastReadData.UnderlyingType == typeof(byte[]))
                {
                    mReader.SetToken(JsonToken.Bytes, lastReadData.AsBinary());
                }
                else if (lastReadData.UnderlyingType == typeof(bool))
                {
                    mReader.SetToken(JsonToken.Boolean, lastReadData.AsBoolean());
                }
                else if (lastReadData.UnderlyingType == typeof(string))
                {
                    mReader.SetToken(JsonToken.String, lastReadData.AsString());
                }
                else if (lastReadData.UnderlyingType == typeof(double) ||
                         lastReadData.UnderlyingType == typeof(float))
                {
                    mReader.SetToken(JsonToken.Float, lastReadData.ToObject());
                }
                else if (lastReadData.UnderlyingType == typeof(MessagePackExtendedTypeObject))
                {
                    MessagePackExtendedTypeObject extendedTypeObject =
                        lastReadData.AsMessagePackExtendedTypeObject();

                    if (extendedTypeObject.TypeCode == KnownExtTypeCode.Timestamp)
                    {
                        mReader.SetToken(JsonToken.Date, lastReadData.AsTimestamp().ToDateTime());
                    }
                }
                else if (lastReadData.IsTypeOf <sbyte>() == true ||
                         lastReadData.IsTypeOf <short>() == true ||
                         lastReadData.IsTypeOf <ushort>() == true ||
                         lastReadData.IsTypeOf <int>() == true ||
                         lastReadData.IsTypeOf <uint>() == true ||
                         lastReadData.IsTypeOf <long>() == true ||
                         lastReadData.IsTypeOf <ulong>() == true)
                {
                    mReader.SetToken(JsonToken.Integer, lastReadData.ToObject());
                }
            }