public List <T> ParseBatchResult <T>(JsonTextReader jsonTextReader, out BaseResult baseResult) { var readerState = new ReaderState(); baseResult = new BaseResult(); var result = new List <T>(); jsonTextReader.Read(); while (readerState.ReadNextProperty(jsonTextReader)) { readerState.ReadNextPropertyValue(jsonTextReader); baseResult.SetFromJsonTextReader(readerState.PropertyName, readerState.Token, readerState.Value); } if (jsonTextReader.TokenType == JsonToken.EndObject) { // no need to check for base result //new BaseResultAnalyzer(db).ThrowIfNeeded(baseResult); return(result); } while (readerState.ReadNextArrayValue(jsonTextReader)) { JObject jObject = null; var document = ParseSingleResult <T>(jsonTextReader, out jObject); db.ChangeTracker.TrackChanges(document, jObject); result.Add(document); } while (readerState.ReadNextProperty(jsonTextReader)) { readerState.ReadNextPropertyValue(jsonTextReader); baseResult.SetFromJsonTextReader(readerState.PropertyName, readerState.Token, readerState.Value); } return(result); }