func (l *List) ConsumeAll() {
	curr := l.currIndex
	for tkn := l.Next(); tkn.Type != EOF; {
		tkn = l.Next()
	}
	l.mu.Lock()
	defer l.mu.Unlock()
	l.currIndex = curr
}
// ConsumeAll consumes all the remaining tokens in the channel and then resets
// the pointer back to the original starting point before the consume operation began.
ConsumeAll consumes all the remaining tokens in the channel and then resets
the pointer back to the original starting point before the consume operation began.
// ConsumeAll consumes all the remaining tokens in the channel and then resets // the pointer back to the original starting point before the consume operation began .
func (l *List) ConsumeAll() {
	curr := l.currIndex
	for tkn := l.Next(); tkn.Type != EOF; {
		tkn = l.Next()
	}
	l.mu.Lock()
	defer l.mu.Unlock()
	l.currIndex = curr
}
func ( l * List ) ConsumeAll ( ) { curr := l . currIndex for tkn := l . Next ( ) ; tkn . Type != EOF ; { tkn = l . Next ( ) } l . mu . Lock ( ) defer l . mu . Unlock ( ) l . currIndex = curr }
ConsumeAll consumes all the remaining tokens in the channel and then resets
the pointer back to the original starting point before the consume operation began.
ConsumeAll consumes all the remaining tokens in the channel and then resets the pointer back to the original starting point before the consume operation began .