code: func onbuild(b *Builder, args []string, attributes map[string]bool, flagArgs []string, original string) error {
  	if len(args) == 0 {
  		return errAtLeastOneArgument("ONBUILD")
  	}
  
  	triggerInstruction := strings.ToUpper(strings.TrimSpace(args[0]))
  	switch triggerInstruction {
  	case "ONBUILD":
  		return fmt.Errorf("Chaining ONBUILD via `ONBUILD ONBUILD` isn't allowed")
  	case "MAINTAINER", "FROM":
  		return fmt.Errorf("%s isn't allowed as an ONBUILD trigger", triggerInstruction)
  	}
  
  	original = obRgex.ReplaceAllString(original, "")
  
  	b.RunConfig.OnBuild = append(b.RunConfig.OnBuild, original)
  	return nil
  }
docs: // ONBUILD RUN echo yo
  //
  // ONBUILD triggers run when the image is used in a FROM statement.
  //
  // ONBUILD handling has a lot of special-case functionality, the heading in
  // evaluator.go and comments around dispatch() in the same file explain the
  // special cases. search for 'OnBuild' in internals.go for additional special
  // cases.
  //