extract TypeParameterRecordingVisitor