Fields
- pattern: string
- program: Program
- reverse: Program
- forward: Dfa
- backward: Dfa
- onepass: OnePass
- the one-pass capture table, if the pattern has one (onepass.ok)
- fixed_length: := -1
- every match is this many bytes long: no need to look for the start
- frozen: bool
- built at compile time: both DFAs are complete and the programs are constants