private ReadResults ReadArrayTag(out INbtTag result) { result = default; ReadResults readResults = Reader.Expect('['); if (!readResults.Successful) { return(readResults); } int start = Reader.GetCursor(); char type = Reader.Read(); Reader.Skip(); Reader.SkipWhitespace(); if (!Reader.CanRead()) { return(ReadResults.Failure(CommandError.ExpectedValue().WithContext(Reader))); } INbtCollectionTag list; switch (type) { case 'B': list = new ByteArrayNbtTag(); break; case 'I': list = new IntegerArrayNbtTag(); break; case 'L': list = new LongArrayNbtTag(); break; default: Reader.SetCursor(start); return(ReadResults.Failure(CommandError.InvalidArrayType(type).WithContext(Reader))); } readResults = ReadListContents(ref list); if (readResults.Successful) { result = list; } return(readResults); }