diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
index 5c31a66..90cb23d 100644
--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
@@ -4402,15 +4402,15 @@
 		return false;
 	}
 
-	//FIXME(SH): XXX COMPLETE THESE!!!
-
 	public boolean visit(LiftingType node)
 	{
 		if (!hasChildrenChanges(node)) {
-//			System.out.println("visit LiftingType unchanged");
 			return doVisitUnchangedChildren(node);
 		}
-//		System.out.println("visit LiftingType changed");
+		rewriteRequiredNode(node, LiftingType.BASE_TYPE_PROPERTY);
+		ensureSpaceAfterReplace(node, LiftingType.BASE_TYPE_PROPERTY);
+		rewriteRequiredNode(node, LiftingType.ROLE_TYPE_PROPERTY);
+		ensureSpaceAfterReplace(node, LiftingType.ROLE_TYPE_PROPERTY);
 		return true;
 	}
 
diff --git a/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/adaptor/pullup/PullUpAdaptor.java b/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/adaptor/pullup/PullUpAdaptor.java
index b87e7b6..1669df9 100644
--- a/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/adaptor/pullup/PullUpAdaptor.java
+++ b/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/adaptor/pullup/PullUpAdaptor.java
@@ -65,6 +65,7 @@
 import org.eclipse.jdt.internal.corext.refactoring.structure.ImportRewriteUtil;
 import org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.IncomingMemberVisibilityAdjustment;
 import org.eclipse.jdt.internal.corext.refactoring.structure.TypeVariableMaplet;
+import org.eclipse.jdt.internal.corext.refactoring.typeconstraints.CompilationUnitRange;
 import org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TType;
 import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
 import org.eclipse.jdt.internal.corext.util.JdtFlags;
@@ -1001,15 +1002,16 @@
 		}
 	}
 
-	// advance fix for Bug 393932 - [refactoring] pull-up with "use the destination type where possible" creates bogus import of nested type
 	protected class UseSuperTypeFix playedBy SuperTypeRefactoringProcessor {
 
-		void rewriteTypeOccurrence(final TType estimate, final CompilationUnitRewrite rewrite, final ASTNode node, final TextEditGroup group)
+		// === advance fix for Bug 393932 - [refactoring] pull-up with "use the destination type where possible" creates bogus import of nested type ===
+
+		void fixRewriteTypeOccurrence(final TType estimate, final CompilationUnitRewrite rewrite, final ASTNode node, final TextEditGroup group)
 		<- replace 
 		void rewriteTypeOccurrence(final TType estimate, final CompilationUnitRewrite rewrite, final ASTNode node, final TextEditGroup group);
 
 		@SuppressWarnings("basecall")
-		callin void rewriteTypeOccurrence(TType estimate, CompilationUnitRewrite rewrite, ASTNode node, TextEditGroup group) {
+		callin void fixRewriteTypeOccurrence(TType estimate, CompilationUnitRewrite rewrite, ASTNode node, TextEditGroup group) {
 			// combined from direct base method plus createCorrespondingNode(..):
 			rewrite.getImportRemover().registerRemovedNode(node);
 			ImportRewrite importRewrite= rewrite.getImportRewrite();
@@ -1017,5 +1019,44 @@
 			ASTNode correspondingNode = importRewrite.addImportFromSignature(new BindingKey(estimate.getBindingKey()).toSignature(), rewrite.getAST(), context);
 			rewrite.getASTRewrite().replace(node, correspondingNode, group);
 		}
+
+		// === tell the base class how to cope with LiftingType references: ===
+		
+		void rewriteTypeOccurrence(TType arg0, CompilationUnitRewrite arg1, ASTNode arg2, TextEditGroup arg3)
+		-> void rewriteTypeOccurrence(TType arg0, CompilationUnitRewrite arg1, ASTNode arg2, TextEditGroup arg3);
+		
+		void rewriteTypeOccurrence(final CompilationUnitRange range, final TType estimate, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final CompilationUnit copy, final Set<String> replacements, final TextEditGroup group)
+		<- after
+		void rewriteTypeOccurrence(final CompilationUnitRange range, final TType estimate, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final CompilationUnit copy, final Set<String> replacements, final TextEditGroup group);
+
+		private void rewriteTypeOccurrence(CompilationUnitRange range, TType estimate, ASTRequestor requestor, CompilationUnitRewrite rewrite, CompilationUnit copy, Set<String> replacements, TextEditGroup group) 
+		{
+			ASTNode node= null;
+			IBinding binding= null;
+			final CompilationUnit target= rewrite.getRoot();
+			node= NodeFinder.perform(copy, range.getSourceRange());
+			if (node != null) {
+				node= ASTNodes.getNormalizedNode(node);
+				// OT: remember whether we saw the base side or the role side of a LiftingType:
+				StructuralPropertyDescriptor locationInParent = node.getLocationInParent();
+				node = node.getParent();
+				if (node instanceof LiftingType) {
+					// climb up one more step than base method does to find the argument (LT only occurs as an argument's type):
+					VariableDeclaration argument = (VariableDeclaration) node.getParent();
+					binding= argument.resolveBinding();
+					node= target.findDeclaringNode(binding.getKey());
+					if (node instanceof SingleVariableDeclaration) {
+						// OT: drill into detail of LiftingType:
+						ASTNode oldTypeNode = (ASTNode)((SingleVariableDeclaration)node).getType().getStructuralProperty(locationInParent);
+						rewriteTypeOccurrence(estimate, rewrite, oldTypeNode, group);
+						if (node.getParent() instanceof MethodDeclaration) {
+							binding= ((VariableDeclaration) node).resolveBinding();
+							if (binding != null)
+								replacements.add(binding.getKey());
+						}
+					}
+				}
+			}
+		}
 	}
 }
