code: func Register(r Root) {
  	for _, o := range roots {
  		if r.DSLName() == o.DSLName() {
  			fmt.Fprintf(os.Stderr, "goagen: duplicate DSL %s", r.DSLName())
  			os.Exit(1)
  		}
  	}
  	t := reflect.TypeOf(r)
  	if t.Kind() == reflect.Ptr {
  		t = t.Elem()
  	}
  	dslPackages[t.PkgPath()] = true
  	roots = append(roots, r)
  }
docs: // Register adds a DSL Root to be executed by Run.