internal override void Consume(ref Source Source, ref Result Result) { From.Consume(ref Source, ref Result); if (Result) { Level++; } while (Level > 0) { if (Source.EOF) { break; } Source.Position++; Result.Length++; if (From.CheckHeader(ref Source)) { From.Consume(ref Source, ref Result); if (Result) { Level++; } } if (To.CheckHeader(ref Source)) { To.Consume(ref Source, ref Result); if (Result) { Level--; } } } if (Level != 0) { Result.Error = new ConsumeFailedError(Expected: this.ToString()); } }