You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: unicode29_rules.go
    path of file: ./repos/caire/vendor/github.com/go-text/typesetting/segmenter
    
    the code of the file until where you have to start completion: // SPDX-License-Identifier: Unlicense OR BSD-3-Clause

package segmenter

import ucd "github.com/go-text/typesetting/unicodedata"

// Apply the Grapheme_Cluster_Boundary_Rules and returns a true if we are
// at a grapheme break.
// See https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules
func (cr *cursor) applyGraphemeBoundaryRules() bool {
	triggerGB11 := cr.updatePictoSequence()    // 
    
func (cr *cursor) applyGraphemeBoundaryRules() bool {
	triggerGB11 := cr.updatePictoSequence()    // apply rule GB11
	triggerGB12_13 := cr.updateGraphemeRIOdd() // apply rule GB12 and GB13

	br0, br1 := cr.prevGrapheme, cr.grapheme
	if cr.r == '\n' && cr.prev == '\r' {
		return false // Rule GB3
	} else if br0 == ucd.GraphemeBreakControl || br0 == ucd.GraphemeBreakCR || br0 == ucd.GraphemeBreakLF ||
		br1 == ucd.GraphemeBreakControl || br1 == ucd.GraphemeBreakCR || br1 == ucd.GraphemeBreakLF {
		return true // Rules GB4 && GB5
	} else if br0 == ucd.GraphemeBreakL &&
		(br1 == ucd.GraphemeBreakL || br1 == ucd.GraphemeBreakV || br1 == ucd.GraphemeBreakLV || br1 == ucd.GraphemeBreakLVT) { // rule GB6
		return false
	} else if (br0 == ucd.GraphemeBreakLV || br0 == ucd.GraphemeBreakV) && (br1 == ucd.GraphemeBreakV || br1 == ucd.GraphemeBreakT) {
		return false // rule GB7
	} else if (br0 == ucd.GraphemeBreakLVT || br0 == ucd.GraphemeBreakT) && br1 == ucd.GraphemeBreakT {
		return false // rule GB8
	} else if br1 == ucd.GraphemeBreakExtend || br1 == ucd.GraphemeBreakZWJ {
		return false // Rule GB9
	} else if br1 == ucd.GraphemeBreakSpacingMark {
		return false // Rule GB9a
	} else if br0 == ucd.GraphemeBreakPrepend {
		return false // Rule GB9b
	} else if triggerGB11 { // Rule GB11
		return false
	} else if triggerGB12_13 {
		return false // Rule GB12 && GB13
	}

	return true // Rule GB999
}