type check visitor complete