Bug 566001 - Only enabled on Java 15 and do not create empty else

Change-Id: I66efc14be4e0eb8bacea8021024286625cdab003
Signed-off-by: Fabrice Tiercelin <fabrice.tiercelin@yahoo.fr>
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d15.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d15.java
index 7452241..f86dfe5 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d15.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d15.java
@@ -168,6 +168,14 @@
 				+ "\n" //
 				+ "        return 0;\n" //
 				+ "    }\n" //
+				+ "\n" //
+				+ "    public int matchPatternOnLoneElse(Object object) {\n" //
+				+ "        // Keep this comment\n" //
+				+ "        if (!(object instanceof Date)) object.toString();\n" //
+				+ "        else final Date date = (Date) object;\n" //
+				+ "\n" //
+				+ "        return 0;\n" //
+				+ "    }\n" //
 				+ "}\n";
 		ICompilationUnit cu= pack.createCompilationUnit("E.java", input, false, null);
 
@@ -243,6 +251,13 @@
 				+ "\n" //
 				+ "        return 0;\n" //
 				+ "    }\n" //
+				+ "\n" //
+				+ "    public int matchPatternOnLoneElse(Object object) {\n" //
+				+ "        // Keep this comment\n" //
+				+ "        if (!(object instanceof Date date)) object.toString();\n" //
+				+ "\n" //
+				+ "        return 0;\n" //
+				+ "    }\n" //
 				+ "}\n";
 		assertGroupCategoryUsed(new ICompilationUnit[] { cu }, new String[] { MultiFixMessages.PatternMatchingForInstanceofCleanup_description });
 		assertRefactoringResultAsExpected(new ICompilationUnit[] { cu }, new String[] { output });
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java
index 9fd3eb9..e5c6d3f 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java
@@ -105,7 +105,7 @@
 	protected ICleanUpFix createFix(CompilationUnit unit) throws CoreException {
 		if (!isEnabled(CleanUpConstants.USE_PATTERN_MATCHING_FOR_INSTANCEOF)
 				|| !PreviewFeaturesSubProcessor.isPreviewFeatureEnabled(unit.getJavaElement().getJavaProject())
-				|| !JavaModelUtil.is14OrHigher(unit.getJavaElement().getJavaProject())) {
+				|| !JavaModelUtil.is15OrHigher(unit.getJavaElement().getJavaProject())) {
 			return null;
 		}
 
@@ -278,7 +278,7 @@
 
 			ASTNodes.replaceButKeepComment(rewrite, nodeToComplete, newInstanceof, group);
 
-			if (ASTNodes.canHaveSiblings(statementToRemove)) {
+			if (ASTNodes.canHaveSiblings(statementToRemove) || statementToRemove.getLocationInParent() == IfStatement.ELSE_STATEMENT_PROPERTY) {
 				rewrite.remove(statementToRemove, group);
 			} else {
 				ASTNodes.replaceButKeepComment(rewrite, statementToRemove, ast.newBlock(), group);