code: func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {
  	// Check the initial '!' character.
  	if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
  		return false
  	}
  	if parser.buffer[parser.buffer_pos] != '!' {
  		yaml_parser_set_scanner_tag_error(parser, directive,
  			start_mark, "did not find expected '!'")
  		return false
  	}
  
  	var s []byte
  
  	// Copy the '!' character.
  	s = read(parser, s)
  
  	// Copy all subsequent alphabetical and numerical characters.
  	if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
  		return false
  	}
  	for is_alpha(parser.buffer, parser.buffer_pos) {
  		s = read(parser, s)
  		if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
  			return false
  		}
  	}
  
  	// Check if the trailing character is '!' and copy it.
  	if parser.buffer[parser.buffer_pos] == '!' {
  		s = read(parser, s)
  	} else {
  		// It's either the '!' tag or not really a tag handle.  If it's a %TAG
  		// directive, it's an error.  If it's a tag token, it must be a part of URI.
  		if directive && !(s[0] == '!' && s[1] == 0) {
  			yaml_parser_set_scanner_tag_error(parser, directive,
  				start_mark, "did not find expected '!'")
  			return false
  		}
  	}
  
  	*handle = s
  	return true
  }
docs: // Scan a tag handle.