code: func (r *Lexer) SkipRecursive() {
  	r.scanToken()
  	var start, end byte
  
  	switch r.token.delimValue {
  	case '{':
  		start, end = '{', '}'
  	case '[':
  		start, end = '[', ']'
  	default:
  		r.consume()
  		return
  	}
  
  	r.consume()
  
  	level := 1
  	inQuotes := false
  	wasEscape := false
  
  	for i, c := range r.Data[r.pos:] {
  		switch {
  		case c == start && !inQuotes:
  			level++
  		case c == end && !inQuotes:
  			level--
  			if level == 0 {
  				r.pos += i + 1
  				return
  			}
  		case c == '\\' && inQuotes:
  			wasEscape = !wasEscape
  			continue
  		case c == '"' && inQuotes:
  			inQuotes = wasEscape
  		case c == '"':
  			inQuotes = true
  		}
  		wasEscape = false
  	}
  	r.pos = len(r.Data)
  	r.fatalError = &LexerError{
  		Reason: "EOF reached while skipping array/object or token",
  		Offset: r.pos,
  		Data:   string(r.Data[r.pos:]),
  	}
  }
docs: // SkipRecursive skips next array or object completely, or just skips a single token if not
  // an array/object.
  //
  // Note: no syntax validation is performed on the skipped data.