private object DeserializeInternal(int depth)
        {
            if (++depth > this._depthLimit)
            {
                throw new ArgumentException(this._s.GetDebugString("RecursionLimit exceeded."));
            }
            char?nextNonEmptyChar = this._s.GetNextNonEmptyChar();
            char?nullable         = nextNonEmptyChar;

            if (!(nullable.HasValue ? new int?((int)nullable.GetValueOrDefault()) : new int?()).HasValue)
            {
                return((object)null);
            }
            this._s.MovePrev();
            if (this.IsNextElementDateTime())
            {
                return(this.DeserializeStringIntoDateTime());
            }
            if (JavaScriptObjectDeserializer.IsNextElementObject(nextNonEmptyChar))
            {
                IDictionary <string, object> dictionary = this.DeserializeDictionary(depth);
                return(!dictionary.ContainsKey("__type") ? (object)dictionary : throw new Exception("kevin can't implement this action"));
            }
            if (JavaScriptObjectDeserializer.IsNextElementArray(nextNonEmptyChar))
            {
                return((object)this.DeserializeList(depth));
            }
            return(JavaScriptObjectDeserializer.IsNextElementString(nextNonEmptyChar) ? (object)this.DeserializeString() : this.DeserializePrimitiveObject());
        }
        private string DeserializeMemberName()
        {
            char?nextNonEmptyChar = this._s.GetNextNonEmptyChar();
            char?nullable         = nextNonEmptyChar;

            if (!(nullable.HasValue ? new int?((int)nullable.GetValueOrDefault()) : new int?()).HasValue)
            {
                return((string)null);
            }
            this._s.MovePrev();
            return(JavaScriptObjectDeserializer.IsNextElementString(nextNonEmptyChar) ? this.DeserializeString() : this.DeserializePrimitiveToken());
        }