diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java
index 4924ba7..0c84d27 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java
@@ -1984,39 +1984,8 @@
 			"	^^^^\n" + 
 			"Zork cannot be resolved to a type\n" + 
 			"----------\n");
-	}	
-	
-	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=82432 - variation
-	public void test077() {
-		this.runConformTest(
-			new String[] {
-				"X.java",
-				"public class X {\n" +
-				" Object e() {\n" +
-				" int i = 12; \n" +
-				"  boolean b = false;\n" +
-				"  switch(i) {\n" +
-				"    case 0: return i > 0;\n" +
-				"    case 1: return i >= 0;\n" +
-				"    case 2: return i < 0;\n" +
-				"    case 3: return i <= 0;\n" +
-				"    case 4: return i == 0;\n" +
-				"    case 5: return i != 0;\n" +
-				"    case 6: return i & 0;\n" +
-				"    case 7: return i ^ 0;\n" +
-				"    case 8: return i | 0;\n" +
-				"    case 9: return b && b;\n" +
-				"    default: return b || b;\n" +
-				"  }\n" +
-				" }\n" +
-				" public static void main(String[] args) {\n" +
-				"  System.out.print(new X().e());\n" +
-				" }\n" +
-				"}",
-			},
-			"false");
-	}	
-	
+	}
+
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=82432 - variation
 	public void test076() {
 		this.runNegativeTest(
@@ -2107,5 +2076,57 @@
 			"	^^^^\n" + 
 			"Zork cannot be resolved to a type\n" + 
 			"----------\n");
-	}		
+	}
+
+	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=82432 - variation
+	public void test077() {
+		this.runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n" +
+				" Object e() {\n" +
+				" int i = 12; \n" +
+				"  boolean b = false;\n" +
+				"  switch(i) {\n" +
+				"    case 0: return i > 0;\n" +
+				"    case 1: return i >= 0;\n" +
+				"    case 2: return i < 0;\n" +
+				"    case 3: return i <= 0;\n" +
+				"    case 4: return i == 0;\n" +
+				"    case 5: return i != 0;\n" +
+				"    case 6: return i & 0;\n" +
+				"    case 7: return i ^ 0;\n" +
+				"    case 8: return i | 0;\n" +
+				"    case 9: return b && b;\n" +
+				"    default: return b || b;\n" +
+				"  }\n" +
+				" }\n" +
+				" public static void main(String[] args) {\n" +
+				"  System.out.print(new X().e());\n" +
+				" }\n" +
+				"}",
+			},
+			"false");
+	}
+
+	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=81923
+	public void test078() {
+		this.runConformTest(
+			new String[] {
+				"X.java",
+				"public class X<T> {\n" +
+				"	public <A extends T> X(A... t) {}\n" +
+				"	<T> void foo(T... t) {}\n" +
+				"	<T> void zip(T t) {}\n" +
+				"	void test() {\n" +
+				"		new X<Integer>(10, 20);\n" +
+				"		foo(10);\n" +
+				"		foo(10, 20);\n" +
+				"		zip(10);\n" +
+				"	}\n" +
+				"}\n"
+			},
+			""
+		);
+	}
 }
\ No newline at end of file
diff --git a/org.eclipse.jdt.core/buildnotes_jdt-core.html b/org.eclipse.jdt.core/buildnotes_jdt-core.html
index f75a89e..322565c 100644
--- a/org.eclipse.jdt.core/buildnotes_jdt-core.html
+++ b/org.eclipse.jdt.core/buildnotes_jdt-core.html
@@ -61,7 +61,9 @@
 </ul>
 
 <h3>Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=82250">82250</a>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=81923">81923</a>
+In certain cases generics seens to be applied before autoboxing
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=82250">82250</a>
 [5.0] don't allow duplicate interface bounds
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=82432">82432</a>
 [1.5] VerifyError with Autoboxing
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
index a93b515..1ad5e5a 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
@@ -167,6 +167,19 @@
 				return null; // incompatible
 
 		if (typeVariables != NoTypeVariables) { // generic method
+			TypeBinding[] newArgs = null;
+			for (int i = 0; i < argLength; i++) {
+				TypeBinding param = i < paramLength ? parameters[i] : parameters[paramLength - 1];
+				if (arguments[i].isBaseType() != param.isBaseType()) {
+					if (newArgs == null) {
+						newArgs = new TypeBinding[argLength];
+						System.arraycopy(arguments, 0, newArgs, 0, argLength);
+					}
+					newArgs[i] = environment().computeBoxingType(arguments[i]);
+				}	
+			}
+			if (newArgs != null)
+				arguments = newArgs;
 			method = ParameterizedGenericMethodBinding.computeCompatibleMethod(method, arguments, this, invocationSite);
 			if (method == null) return null; // incompatible
 			if (!method.isValidBinding()) return method; // bound check issue is taking precedence
