rename: TypeVisitor -> TypeVisitorR