code: func (c *Compiler) Compile(modules map[string]*Module) {
  	c.Modules = make(map[string]*Module, len(modules))
  	for k, v := range modules {
  		c.Modules[k] = v.Copy()
  		c.sorted = append(c.sorted, k)
  	}
  	sort.Strings(c.sorted)
  	c.compile()
  }
docs: // Compile runs the compilation process on the input modules. The compiled
  // version of the modules and associated data structures are stored on the
  // compiler. If the compilation process fails for any reason, the compiler will
  // contain a slice of errors.