code: func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {
  	for i := 0; i < len(emitter.tag_directives); i++ {
  		if bytes.Equal(value.handle, emitter.tag_directives[i].handle) {
  			if allow_duplicates {
  				return true
  			}
  			return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive")
  		}
  	}
  
  	// [Go] Do we actually need to copy this given garbage collection
  	// and the lack of deallocating destructors?
  	tag_copy := yaml_tag_directive_t{
  		handle: make([]byte, len(value.handle)),
  		prefix: make([]byte, len(value.prefix)),
  	}
  	copy(tag_copy.handle, value.handle)
  	copy(tag_copy.prefix, value.prefix)
  	emitter.tag_directives = append(emitter.tag_directives, tag_copy)
  	return true
  }
docs: // Append a directive to the directives stack.