code: func (bp *Bypass) Reload(r io.Reader) error {
  	var matchers []Matcher
  	var period time.Duration
  	var reversed bool
  
  	if r == nil || bp.Stopped() {
  		return nil
  	}
  
  	scanner := bufio.NewScanner(r)
  	for scanner.Scan() {
  		line := scanner.Text()
  		ss := splitLine(line)
  		if len(ss) == 0 {
  			continue
  		}
  		switch ss[0] {
  		case "reload": // reload option
  			if len(ss) > 1 {
  				period, _ = time.ParseDuration(ss[1])
  			}
  		case "reverse": // reverse option
  			if len(ss) > 1 {
  				reversed, _ = strconv.ParseBool(ss[1])
  			}
  		default:
  			matchers = append(matchers, NewMatcher(ss[0]))
  		}
  	}
  
  	if err := scanner.Err(); err != nil {
  		return err
  	}
  
  	bp.mux.Lock()
  	defer bp.mux.Unlock()
  
  	bp.matchers = matchers
  	bp.period = period
  	bp.reversed = reversed
  
  	return nil
  }
docs: // Reload parses config from r, then live reloads the bypass.