Bug 488672: CCE at
AllocationExpression.inferElidedTypes(AllocationExpression.java:606)

Change-Id: I68bb11fa5b393123562c6fc665281f6e3208aeab
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
index a03f6d2..b49267e 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
@@ -6032,4 +6032,23 @@
 		"The method missing() is undefined for the type Object\n" + 
 		"----------\n");
 }
+public void testBug488672() {
+	runConformTest(
+		new String[] {
+			"X.java",
+			"import java.util.*;\n" + 
+			"\n" + 
+			"public class X {\n" + 
+			"	void foo(Manager manager) {\n" + 
+			"		HashSet<String> activeBindings = new HashSet<>(manager.getActiveBindingsDisregardingContextFlat());\n" + 
+			"	}\n" + 
+			"}\n" + 
+			"\n" + 
+			"class Manager {\n" + 
+			"	Collection getActiveBindingsDisregardingContextFlat() {\n" + 
+			"		return null;\n" + 
+			"	}\n" + 
+			"}\n"
+		});
+}
 }
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java
index 2e8fee7..e55dec8 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java
@@ -605,7 +605,7 @@
 		// the erasure of the return type and thrown types of m's type."
 		if (substitute)
 			type = Scope.substitute(this, type);
-		return type.erasure();
+		return env.convertToRawType(type.erasure(), true);
 	}
 
 	/*