func (t *Text) SetMovedAt(movedAt *time.Ticket) {
	t.movedAt = movedAt
}
SetMovedAt sets the move time of this Text.
package json
import (
	"fmt"
	"unicode/utf16"
	"go.uber.org/zap"
	"github.com/yorkie-team/yorkie/internal/log"
	"github.com/yorkie-team/yorkie/pkg/document/time"
)
func InitialTextNode() *RGATreeSplitNode {
	return NewRGATreeSplitNode(initialNodeID, &TextValue{
		value: "",
	})
}
type TextValue struct {
	value string
}
func NewTextValue(value string) *TextValue {
	return &TextValue{
		value: value,
	}
}
func (t *TextValue) Len() int {
	encoded := utf16.Encode([]rune(t.value))
	return len(encoded)
}
func (t *TextValue) String() string {
	return t.value
}
func (t *TextValue) AnnotatedString() string {
	return t.value
}
func (t *TextValue) Split(offset int) RGATreeSplitValue {
	value := t.value
	encoded := utf16.Encode([]rune(value))
	t.value = string(utf16.Decode(encoded[0:offset]))
	return NewTextValue(string(utf16.Decode(encoded[offset:])))
}
func (t *TextValue) DeepCopy() RGATreeSplitValue {
	return &TextValue{
		value: t.value,
	}
}
type Text struct {
	rgaTreeSplit *RGATreeSplit
	selectionMap map[string]*Selection
	createdAt    *time.Ticket
	movedAt      *time.Ticket
	removedAt    *time.Ticket
}
func NewText(elements *RGATreeSplit, createdAt *time.Ticket) *Text {
	return &Text{
		rgaTreeSplit: elements,
		selectionMap: make(map[string]*Selection),
		createdAt:    createdAt,
	}
}
func (t *Text) Marshal() string {
	return fmt.Sprintf("\"%s\"", t.rgaTreeSplit.marshal())
}
func (t *Text) DeepCopy() Element {
	rgaTreeSplit := NewRGATreeSplit(InitialTextNode())
	current := rgaTreeSplit.InitialHead()
	for _, node := range t.Nodes() {
		current = rgaTreeSplit.InsertAfter(current, node.DeepCopy())
		insPrevID := node.InsPrevID()
		if insPrevID != nil {
			insPrevNode := rgaTreeSplit.FindNode(insPrevID)
			if insPrevNode == nil {
				log.Logger.Warn("insPrevNode should be presence")
			}
			current.SetInsPrev(insPrevNode)
		}
	}
	return NewText(rgaTreeSplit, t.createdAt)
}
func (t *Text) CreatedAt() *time.Ticket {
	return t.createdAt
}
func (t *Text) RemovedAt() *time.Ticket {
	return t.removedAt
}
func (t *Text) MovedAt() *time.Ticket {
	return t.movedAt
}