code: func (info *regexpInfo) simplify(force bool) {
  	//println("  simplify", info.String(), " force=", force)
  	//defer func() { println("  ->", info.String()) }()
  	// If there are now too many exact strings,
  	// loop over them, adding trigrams and moving
  	// the relevant pieces into prefix and suffix.
  	info.exact.clean(false)
  	if len(info.exact) > maxExact || (info.exact.minLen() >= 3 && force) || info.exact.minLen() >= 4 {
  		info.addExact()
  		for _, s := range info.exact {
  			n := len(s)
  			if n < 3 {
  				info.prefix.add(s)
  				info.suffix.add(s)
  			} else {
  				info.prefix.add(s[:2])
  				info.suffix.add(s[n-2:])
  			}
  		}
  		info.exact = nil
  	}
  
  	if !info.exact.have() {
  		info.simplifySet(&info.prefix)
  		info.simplifySet(&info.suffix)
  	}
  }
docs: // simplify simplifies the regexpInfo when the exact set gets too large.