private Vertex GetAutoMove(Vertex vertex, char ch) { if (!vertex.AutoMoveExist(ch)) { if (vertex.NextVertexExist(ch)) { vertex.AddAutoMove(vertex.NextVertex(ch)); } else { if (vertex == Root) { vertex.AddAutoMove(Root, ch); } else { vertex.AddAutoMove(GetAutoMove(GetSuffLink(vertex), ch), ch); } } } return(vertex.AutoMove(ch)); }