/// <summary> /// Returns the first token in this sequence and moves forward. /// </summary> /// <returns></returns> public JsonToken Pop() { _prepareRead(); _skipWhiteSpace(); JsonToken token = JsonToken.Undefined; for (int length = 1; _zero + length <= _tokens.Length && (token.Type == JsonTokenType.Undefined || token.Type == JsonTokenType.Unknown); length++) { token = new JsonToken(_tokens.Substring(_zero, length)); } _zero += token.Length; if (token.Type == JsonTokenType.String || token.Type == JsonTokenType.Number) { while (_zero < _tokens.Length && token.TryAppend(_tokens[_zero])) { _zero++; } if (!token.IsValid()) { token = JsonToken.Undefined; } } return token; }