func (pos *RGATreeSplitNodePos) AnnotatedString() string {
	return fmt.Sprintf("%s:%d", pos.id.AnnotatedString(), pos.relativeOffset)
}
AnnotatedString returns a String containing the meta data of the position
for debugging purpose.
package json
import (
	"fmt"
	"strconv"
	"strings"
	"github.com/yorkie-team/yorkie/internal/log"
	"github.com/yorkie-team/yorkie/pkg/document/time"
	"github.com/yorkie-team/yorkie/pkg/llrb"
	"github.com/yorkie-team/yorkie/pkg/splay"
)
var (
	initialNodeID = NewRGATreeSplitNodeID(time.InitialTicket, 0)
)
type RGATreeSplitValue interface {
	Split(offset int) RGATreeSplitValue
	Len() int
	DeepCopy() RGATreeSplitValue
	String() string
	AnnotatedString() string
}
type RGATreeSplitNodeID struct {
	createdAt *time.Ticket
	offset    int
}
func NewRGATreeSplitNodeID(createdAt *time.Ticket, offset int) *RGATreeSplitNodeID {
	return &RGATreeSplitNodeID{
		createdAt: createdAt,
		offset:    offset,
	}
}
func (t *RGATreeSplitNodeID) Compare(other llrb.Key) int {
	if t == nil || other == nil {
		panic("RGATreeSplitNodeID cannot be null")
	}
	o := other.(*RGATreeSplitNodeID)
	compare := t.createdAt.Compare(o.createdAt)
	if compare != 0 {
		return compare
	}
	if t.offset > o.offset {
		return 1
	} else if t.offset < o.offset {
		return -1
	}
	return 0
}
func (t *RGATreeSplitNodeID) Equal(other llrb.Key) bool {
	return t.Compare(other) == 0
}
func (t *RGATreeSplitNodeID) CreatedAt() *time.Ticket {
	return t.createdAt
}
func (t *RGATreeSplitNodeID) Offset() int {
	return t.offset
}
func (t *RGATreeSplitNodeID) Split(offset int) *RGATreeSplitNodeID {
	return NewRGATreeSplitNodeID(t.createdAt, t.offset+offset)
}
func (t *RGATreeSplitNodeID) AnnotatedString() string {
	return fmt.Sprintf("%s:%d", t.createdAt.AnnotatedString(), t.offset)
}
func (t *RGATreeSplitNodeID) hasSameCreatedAt(id *RGATreeSplitNodeID) bool {
	return t.createdAt.Compare(id.createdAt) == 0
}
func (t *RGATreeSplitNodeID) key() string {
	return t.CreatedAt().Key() + ":" + strconv.FormatUint(uint64(t.offset), 10)
}
type RGATreeSplitNodePos struct {
	id             *RGATreeSplitNodeID
	relativeOffset int
}
func NewRGATreeSplitNodePos(id *RGATreeSplitNodeID, offset int) *RGATreeSplitNodePos {
	return &RGATreeSplitNodePos{id, offset}
}
func (pos *RGATreeSplitNodePos) getAbsoluteID() *RGATreeSplitNodeID {
	return NewRGATreeSplitNodeID(pos.id.createdAt, pos.id.offset+pos.relativeOffset)
}