Bug 579526: Remove duplicated code in Fix and FixCore classes

Change-Id: I930c8cc2fd7765517873f6a12ece67ed713ebf36
Signed-off-by: Thomas Mäder <tmader@redhat.com>
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.ui/+/192398
Tested-by: JDT Bot <jdt-bot@eclipse.org>
Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/AbstractFix.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/AbstractFixCore.java
similarity index 88%
rename from org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/AbstractFix.java
rename to org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/AbstractFixCore.java
index 5e330f6..81315ac 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/AbstractFix.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/AbstractFixCore.java
@@ -17,11 +17,11 @@
 import org.eclipse.core.runtime.IStatus;
 
 
-public abstract class AbstractFix implements IProposableFix, ILinkedFixCore {
+public abstract class AbstractFixCore implements IProposableFix, ILinkedFixCore {
 
 	private final String fDisplayString;
 
-	protected AbstractFix(String displayString) {
+	protected AbstractFixCore(String displayString) {
 		fDisplayString= displayString;
 	}
 
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/CompilationUnitRewriteOperationsFixCore.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/CompilationUnitRewriteOperationsFixCore.java
index a7d3d1a..b3c4279 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/CompilationUnitRewriteOperationsFixCore.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/fix/CompilationUnitRewriteOperationsFixCore.java
@@ -39,7 +39,7 @@
 import org.eclipse.jdt.internal.corext.codemanipulation.ContextSensitiveImportRewriteContext;
 import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite;
 
-public class CompilationUnitRewriteOperationsFixCore extends AbstractFix {
+public class CompilationUnitRewriteOperationsFixCore extends AbstractFixCore {
 
 	public abstract static class CompilationUnitRewriteOperation {
 
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/CodeStyleFix.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/CodeStyleFix.java
index 6412abc..ea7895f 100644
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/CodeStyleFix.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/CodeStyleFix.java
@@ -13,80 +13,17 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.corext.fix;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jdt.core.dom.ASTNode;
-import org.eclipse.jdt.core.dom.Block;
 import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
-
-import org.eclipse.jdt.internal.corext.fix.CodeStyleFixCore.AddThisQualifierOperation;
-import org.eclipse.jdt.internal.corext.fix.CodeStyleFixCore.ToStaticAccessOperation;
-import org.eclipse.jdt.internal.corext.util.Messages;
 
 import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
 import org.eclipse.jdt.ui.text.java.IProblemLocation;
 
 import org.eclipse.jdt.internal.ui.fix.CleanUpFixWrapper;
-import org.eclipse.jdt.internal.ui.text.correction.IProblemLocationCore;
-import org.eclipse.jdt.internal.ui.text.correction.ProblemLocation;
 
 /**
  * A fix which fixes code style issues.
  */
-public class CodeStyleFix extends CompilationUnitRewriteOperationsFix {
-
-
-	public static CompilationUnitRewriteOperationsFix[] createNonStaticAccessFixes(CompilationUnit compilationUnit, IProblemLocation problem) {
-		IProblemLocationCore problemLocation= (ProblemLocation)problem;
-		if (!CodeStyleFixCore.isNonStaticAccess(problemLocation))
-			return null;
-
-		ToStaticAccessOperation operations[]= CodeStyleFixCore.createToStaticAccessOperations(compilationUnit, new HashMap<ASTNode, Block>(), problemLocation, false);
-		if (operations == null)
-			return null;
-
-		String label1= Messages.format(FixMessages.CodeStyleFix_ChangeAccessToStatic_description, operations[0].getAccessorName());
-		CompilationUnitRewriteOperationsFix fix1= new CompilationUnitRewriteOperationsFix(label1, compilationUnit,
-				new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] {operations[0]});
-
-		if (operations.length > 1) {
-			String label2= Messages.format(FixMessages.CodeStyleFix_ChangeAccessToStaticUsingInstanceType_description, operations[1].getAccessorName());
-			CompilationUnitRewriteOperationsFix fix2= new CompilationUnitRewriteOperationsFix(label2, compilationUnit,
-					new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] {operations[1]});
-			return new CompilationUnitRewriteOperationsFix[] {fix1, fix2};
-		}
-		return new CompilationUnitRewriteOperationsFix[] {fix1};
-	}
-
-	public static CompilationUnitRewriteOperationsFix createAddFieldQualifierFix(CompilationUnit compilationUnit, IProblemLocation problem) {
-		if (IProblem.UnqualifiedFieldAccess != problem.getProblemId())
-			return null;
-
-		IProblemLocationCore problemLocation= (ProblemLocation)problem;
-		AddThisQualifierOperation operation= CodeStyleFixCore.getUnqualifiedFieldAccessResolveOperation(compilationUnit, problemLocation);
-		if (operation == null)
-			return null;
-
-		String groupName= operation.getDescription();
-		return new CodeStyleFix(groupName, compilationUnit, new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] {operation});
-	}
-
-	public static CompilationUnitRewriteOperationsFix createIndirectAccessToStaticFix(CompilationUnit compilationUnit, IProblemLocation problem) {
-		IProblemLocationCore problemLocation= (ProblemLocation)problem;
-		if (!CodeStyleFixCore.isIndirectStaticAccess(problemLocation))
-			return null;
-
-		ToStaticAccessOperation operations[]= CodeStyleFixCore.createToStaticAccessOperations(compilationUnit, new HashMap<ASTNode, Block>(), problemLocation, false);
-		if (operations == null)
-			return null;
-
-		String label= Messages.format(FixMessages.CodeStyleFix_ChangeStaticAccess_description, operations[0].getAccessorName());
-		return new CodeStyleFix(label, compilationUnit, new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] {operations[0]});
-	}
+public class CodeStyleFix {
 
 	public static ICleanUpFix createCleanUp(CompilationUnit compilationUnit,
 			boolean addThisQualifier,
@@ -98,9 +35,8 @@
 			boolean removeFieldQualifier,
 			boolean removeMethodQualifier) {
 
-		ICleanUpFixCore fix= CodeStyleFixCore.createCleanUp(compilationUnit, addThisQualifier, changeNonStaticAccessToStatic, qualifyStaticFieldAccess,
-				changeIndirectStaticAccessToDirect, qualifyMethodAccess, qualifyStaticMethodAccess, removeFieldQualifier, removeMethodQualifier);
-		return fix == null ? null : new CleanUpFixWrapper(fix);
+		return CleanUpFixWrapper.create(CodeStyleFixCore.createCleanUp(compilationUnit, addThisQualifier, changeNonStaticAccessToStatic, qualifyStaticFieldAccess,
+				changeIndirectStaticAccessToDirect, qualifyMethodAccess, qualifyStaticMethodAccess, removeFieldQualifier, removeMethodQualifier));
 	}
 
 	public static ICleanUpFix createCleanUp(CompilationUnit compilationUnit, IProblemLocation[] problems,
@@ -108,22 +44,9 @@
 			boolean changeNonStaticAccessToStatic,
 			boolean changeIndirectStaticAccessToDirect) {
 
-		IProblemLocationCore[] problemLocationArray= null;
-		if (problems != null) {
-			List<IProblemLocationCore> problemList= new ArrayList<>();
-			for (IProblemLocation location : problems) {
-				IProblemLocationCore problem= (ProblemLocation)location;
-				problemList.add(problem);
-			}
-			problemLocationArray= problemList.toArray(new IProblemLocationCore[0]);
-		}
-
-		ICleanUpFixCore fix= CodeStyleFixCore.createCleanUp(compilationUnit, problemLocationArray, addThisQualifier, changeNonStaticAccessToStatic, changeIndirectStaticAccessToDirect);
-		return fix == null ? null : new CleanUpFixWrapper(fix);
-	}
-
-	private CodeStyleFix(String name, CompilationUnit compilationUnit, CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] operations) {
-		super(name, compilationUnit, operations);
+		return CleanUpFixWrapper.create(problems, problemLocations -> {
+			return CodeStyleFixCore.createCleanUp(compilationUnit, problemLocations, addThisQualifier, changeNonStaticAccessToStatic, changeIndirectStaticAccessToDirect);
+		});
 	}
 
 }
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/ConvertLoopFix.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/ConvertLoopFix.java
deleted file mode 100644
index 062fb59..0000000
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/ConvertLoopFix.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2020 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Red Hat Inc. - modified to use ConvertLoopFixCore
- *******************************************************************************/
-/**
- *
- **/
-package org.eclipse.jdt.internal.corext.fix;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IStatus;
-
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.ForStatement;
-
-import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
-
-import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
-
-public class ConvertLoopFix extends CompilationUnitRewriteOperationsFix {
-
-	public static ICleanUpFix createCleanUp(CompilationUnit compilationUnit, boolean convertForLoops, boolean convertIterableForLoops,
-			boolean makeFinal, boolean checkLoopVarUsed) {
-		if (!JavaModelUtil.is50OrHigher(compilationUnit.getJavaElement().getJavaProject()))
-			return null;
-
-		if (!convertForLoops && !convertIterableForLoops)
-			return null;
-
-		List<ConvertLoopOperation> operations= new ArrayList<>();
-		ConvertLoopFixCore.ControlStatementFinder finder= new ConvertLoopFixCore.ControlStatementFinder(convertForLoops, convertIterableForLoops, makeFinal,
-				checkLoopVarUsed, operations);
-		compilationUnit.accept(finder);
-
-		if (operations.isEmpty())
-			return null;
-
-		CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] ops= operations.toArray(new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[operations.size()]);
-		return new ConvertLoopFix(FixMessages.ControlStatementsFix_change_name, compilationUnit, ops, null);
-	}
-
-	public static ConvertLoopFix createConvertForLoopToEnhancedFix(CompilationUnit compilationUnit, ForStatement loop) {
-		ConvertLoopOperation convertForLoopOperation= new ConvertForLoopOperation(loop);
-		if (!convertForLoopOperation.satisfiesPreconditions().isOK())
-			return null;
-
-		return new ConvertLoopFix(FixMessages.Java50Fix_ConvertToEnhancedForLoop_description, compilationUnit, new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] {convertForLoopOperation}, null);
-	}
-
-	public static ConvertLoopFix createConvertIterableLoopToEnhancedFix(CompilationUnit compilationUnit, ForStatement loop) {
-		ConvertIterableLoopOperation loopConverter= new ConvertIterableLoopOperation(loop);
-		IStatus status= loopConverter.satisfiesPreconditions();
-		if (status.getSeverity() == IStatus.ERROR)
-			return null;
-
-		return new ConvertLoopFix(FixMessages.Java50Fix_ConvertToEnhancedForLoop_description, compilationUnit, new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] {loopConverter}, status);
-	}
-
-	private final IStatus fStatus;
-
-	protected ConvertLoopFix(String name, CompilationUnit compilationUnit, CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] fixRewriteOperations, IStatus status) {
-		super(name, compilationUnit, fixRewriteOperations);
-		fStatus= status;
-	}
-
-	@Override
-	public IStatus getStatus() {
-		return fStatus;
-	}
-
-}
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/UnnecessaryArrayCreationFix.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/UnnecessaryArrayCreationFix.java
index fb9034e..ede783b 100644
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/UnnecessaryArrayCreationFix.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/UnnecessaryArrayCreationFix.java
@@ -41,6 +41,8 @@
 
 import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
 
+import org.eclipse.jdt.internal.ui.fix.CleanUpFixWrapper;
+
 public class UnnecessaryArrayCreationFix extends CompilationUnitRewriteOperationsFix {
 
 	public final static class UnnecessaryArrayCreationFinder extends GenericVisitor {
@@ -149,7 +151,7 @@
 			return null;
 
 		CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[] ops= operations.toArray(new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[operations.size()]);
-		return new ConvertLoopFix(FixMessages.ControlStatementsFix_change_name, compilationUnit, ops, null);
+		return new CleanUpFixWrapper(new ConvertLoopFixCore(FixMessages.ControlStatementsFix_change_name, compilationUnit, ops, null));
 	}
 
 	public static UnnecessaryArrayCreationFix createUnnecessaryArrayCreationFix(CompilationUnit compilationUnit, Expression methodInvocation) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpFixWrapper.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpFixWrapper.java
index d8d5f0e..836b94e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpFixWrapper.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpFixWrapper.java
@@ -14,6 +14,8 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.ui.fix;
 
+import java.util.function.Function;
+
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 
@@ -21,6 +23,11 @@
 import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
 
 import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
+import org.eclipse.jdt.ui.text.java.IProblemLocation;
+
+import org.eclipse.jdt.internal.ui.text.correction.IProblemLocationCore;
+import org.eclipse.jdt.internal.ui.text.correction.ProblemLocation;
+import org.eclipse.jdt.internal.ui.text.correction.ProblemLocationCore;
 
 /**
  * Class to wrap an ICleanUpFixCore and be used as an ICleanUpFix
@@ -39,4 +46,20 @@
 		return cleanUpFixCore.createChange(progressMonitor);
 	}
 
+	public static CleanUpFixWrapper create(ICleanUpFixCore cleanUpFixCore) {
+		return cleanUpFixCore == null ? null : new CleanUpFixWrapper(cleanUpFixCore);
+	}
+
+	public static ICleanUpFix create(IProblemLocation[] problems, Function<IProblemLocationCore[], ICleanUpFixCore> createFunction) {
+		IProblemLocationCore[] problemLocationArray= null;
+		if (problems != null) {
+			problemLocationArray= new ProblemLocationCore[problems.length];
+			for (int i= 0; i < problems.length; i++) {
+				problemLocationArray[i]=  (ProblemLocation)problems[i];
+			}
+		}
+
+		return CleanUpFixWrapper.create(createFunction.apply(problemLocationArray));
+	}
+
 }
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/ConvertLoopCleanUp.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/ConvertLoopCleanUp.java
index 1cb36c8..22a2220 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/ConvertLoopCleanUp.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/ConvertLoopCleanUp.java
@@ -22,7 +22,7 @@
 import org.eclipse.jdt.core.dom.CompilationUnit;
 
 import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
-import org.eclipse.jdt.internal.corext.fix.ConvertLoopFix;
+import org.eclipse.jdt.internal.corext.fix.ConvertLoopFixCore;
 
 import org.eclipse.jdt.ui.cleanup.CleanUpContext;
 import org.eclipse.jdt.ui.cleanup.CleanUpRequirements;
@@ -52,10 +52,7 @@
 		boolean convertForLoops= isEnabled(CleanUpConstants.CONTROL_STATEMENTS_CONVERT_FOR_LOOP_TO_ENHANCED);
 		boolean checkIfLoopVarUsed= isEnabled(CleanUpConstants.CONTROL_STATEMENTS_CONVERT_FOR_LOOP_ONLY_IF_LOOP_VAR_USED);
 
-		return ConvertLoopFix.createCleanUp(compilationUnit,
-				convertForLoops, convertForLoops,
-				isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES),
-				checkIfLoopVarUsed);
+		return CleanUpFixWrapper.create(ConvertLoopFixCore.createCleanUp(compilationUnit, convertForLoops, convertForLoops, isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES), checkIfLoopVarUsed));
 	}
 
 	@Override
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
index 127ce95..3e4dd33 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
@@ -142,7 +142,7 @@
 import org.eclipse.jdt.internal.corext.dom.Selection;
 import org.eclipse.jdt.internal.corext.dom.TypeRules;
 import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
-import org.eclipse.jdt.internal.corext.fix.CodeStyleFix;
+import org.eclipse.jdt.internal.corext.fix.CodeStyleFixCore;
 import org.eclipse.jdt.internal.corext.fix.IProposableFix;
 import org.eclipse.jdt.internal.corext.fix.Java50Fix;
 import org.eclipse.jdt.internal.corext.fix.StringFix;
@@ -639,7 +639,7 @@
 	 * Fix instance accesses and indirect (static) accesses to static fields/methods
 	 */
 	public static void addCorrectAccessToStaticProposals(IInvocationContext context, IProblemLocation problem, Collection<ICommandAccess> proposals) throws CoreException {
-		IProposableFix fix= CodeStyleFix.createIndirectAccessToStaticFix(context.getASTRoot(), problem);
+		IProposableFix fix= CodeStyleFixCore.createIndirectAccessToStaticFix(context.getASTRoot(), (IProblemLocationCore)problem);
 		if (fix != null) {
 			Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);
 			Map<String, String> options= new HashMap<>();
@@ -651,7 +651,7 @@
 			return;
 		}
 
-		IProposableFix[] fixes= CodeStyleFix.createNonStaticAccessFixes(context.getASTRoot(), problem);
+		IProposableFix[] fixes= CodeStyleFixCore.createNonStaticAccessFixes(context.getASTRoot(), (IProblemLocationCore)problem);
 		if (fixes != null) {
 			IProposableFix fix1= fixes[0];
 			Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);
@@ -1049,7 +1049,7 @@
 	}
 
 	public static void addUnqualifiedFieldAccessProposal(IInvocationContext context, IProblemLocation problem, Collection<ICommandAccess> proposals) {
-		IProposableFix fix= CodeStyleFix.createAddFieldQualifierFix(context.getASTRoot(), problem);
+		IProposableFix fix= CodeStyleFixCore.createAddFieldQualifierFix(context.getASTRoot(), (IProblemLocationCore) problem);
 		if (fix != null) {
 			Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);
 			Map<String, String> options= new HashMap<>();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
index f9abbea..39aab9b 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
@@ -164,7 +164,7 @@
 import org.eclipse.jdt.internal.corext.dom.TokenScanner;
 import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
 import org.eclipse.jdt.internal.corext.fix.ControlStatementsFix;
-import org.eclipse.jdt.internal.corext.fix.ConvertLoopFix;
+import org.eclipse.jdt.internal.corext.fix.ConvertLoopFixCore;
 import org.eclipse.jdt.internal.corext.fix.DoWhileRatherThanWhileFix;
 import org.eclipse.jdt.internal.corext.fix.IProposableFix;
 import org.eclipse.jdt.internal.corext.fix.LambdaExpressionsFix;
@@ -4132,7 +4132,7 @@
 		if (resultingCollections == null)
 			return true;
 
-		IProposableFix fix= ConvertLoopFix.createConvertForLoopToEnhancedFix(context.getASTRoot(), forStatement);
+		IProposableFix fix= ConvertLoopFixCore.createConvertForLoopToEnhancedFix(context.getASTRoot(), forStatement);
 		if (fix == null)
 			return false;
 
@@ -4155,7 +4155,7 @@
 		if (resultingCollections == null)
 			return true;
 
-		IProposableFix fix= ConvertLoopFix.createConvertIterableLoopToEnhancedFix(context.getASTRoot(), forStatement);
+		IProposableFix fix= ConvertLoopFixCore.createConvertIterableLoopToEnhancedFix(context.getASTRoot(), forStatement);
 		if (fix == null)
 			return false;