private void ProcessPropertyValue(SGF_Property property) { if (PeekChar() != '[') { return; } bool isContinue = true; do { int indexPropertyValueEnd = FindNextPropertyValueEnd(); byte[] value = ReadBytes(indexPropertyValueEnd - index_ + 1); if (value.Length > 2 && value[0] == (byte)'[' && value[value.Length - 1] == (byte)']') { byte[] realValue = new byte[value.Length - 2]; Buffer.BlockCopy(value, 1, realValue, 0, realValue.Length); property.AddValue(realValue); } while (!EOF) { char ch = PeekChar(); if (IsUnusedChar(ch)) { ReadChar(); continue; } else if (ch != '[' || IsControlChar(ch)) { isContinue = false; } break; } } while (!EOF && isContinue); return; }