kmp
visitor模式