const opcodeVersion … type Template … type Compiler … type op … func (w wildcard) compile() []op { … } func (w deepWildcard) compile() []op { … } func (l literal) compile() []op { … } func (v variable) compile() []op { … } func (t template) Compile() Template { … }