diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ReflectMethods.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ReflectMethods.java
index 999ed3b73bb..b94a8245a80 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ReflectMethods.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ReflectMethods.java
@@ -646,6 +646,7 @@ Value convert(Value exprVal, Type target) {
         }
 
         Value box(Value valueExpr, Type box) {
+            // Boxing is a static method e.g., java.lang.Integer::valueOf(int)java.lang.Integer
             MethodRef boxMethod = MethodRef.method(typeToTypeElement(box), names.valueOf.toString(),
                     FunctionType.functionType(typeToTypeElement(box), typeToTypeElement(types.unboxedType(box))));
             return append(CoreOps.invoke(boxMethod, valueExpr));
@@ -655,11 +656,13 @@ Value unbox(Value valueExpr, Type box, Type primitive, Type unboxedType) {
             if (unboxedType.hasTag(NONE)) {
                 // Object target, first downcast to correct wrapper type
                 unboxedType = primitive;
-                valueExpr = append(CoreOps.cast(typeToTypeElement(types.boxedClass(unboxedType).type), valueExpr));
+                box = types.boxedClass(unboxedType).type;
+                valueExpr = append(CoreOps.cast(typeToTypeElement(box), valueExpr));
             }
+            // Unboxing is a virtual method e.g., java.lang.Integer::intValue()int
             MethodRef unboxMethod = MethodRef.method(typeToTypeElement(box),
                     unboxedType.tsym.name.append(names.Value).toString(),
-                    FunctionType.functionType(typeToTypeElement(unboxedType), typeToTypeElement(box)));
+                    FunctionType.functionType(typeToTypeElement(unboxedType)));
             return append(CoreOps.invoke(unboxMethod, valueExpr));
         }
 
diff --git a/test/langtools/tools/javac/reflect/BoxingConversionTest.java b/test/langtools/tools/javac/reflect/BoxingConversionTest.java
index bb64f94e3f2..28223dd942e 100644
--- a/test/langtools/tools/javac/reflect/BoxingConversionTest.java
+++ b/test/langtools/tools/javac/reflect/BoxingConversionTest.java
@@ -51,7 +51,7 @@ void test1() {
             func @"test2" (%0 : BoxingConversionTest, %1 : java.lang.Long)void -> {
                 %2 : Var<java.lang.Long> = var %1 @"L";
                 %3 : java.lang.Long = var.load %2;
-                %4 : long = invoke %3 @"java.lang.Long::longValue(java.lang.Long)long";
+                %4 : long = invoke %3 @"java.lang.Long::longValue()long";
                 %5 : Var<long> = var %4 @"l";
                 return;
             };
@@ -79,7 +79,7 @@ void test3() {
                 %2 : Var<java.lang.Object> = var %1 @"o";
                 %3 : java.lang.Object = var.load %2;
                 %4 : java.lang.Long = cast %3 @"java.lang.Long";
-                %5 : long = invoke %4 @"java.lang.Object::longValue(java.lang.Object)long";
+                %5 : long = invoke %4 @"java.lang.Long::longValue()long";
                 %6 : Var<long> = var %5 @"l";
                 return;
             };
@@ -94,7 +94,7 @@ void test4(Object o) {
                 %2 : Var<java.lang.Integer> = var %1 @"i2";
                 %3 : java.lang.Integer = var.load %2;
                 %4 : int = constant @"1";
-                %5 : int = invoke %3 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                %5 : int = invoke %3 @"java.lang.Integer::intValue()int";
                 %6 : int = add %5 %4;
                 %7 : java.lang.Integer = invoke %6 @"java.lang.Integer::valueOf(int)java.lang.Integer";
                 var.store %2 %7;
@@ -111,7 +111,7 @@ void test5(Integer i2) {
                 %2 : Var<java.lang.Integer> = var %1 @"i2";
                 %3 : java.lang.Integer = var.load %2;
                 %4 : int = constant @"3";
-                %5 : int = invoke %3 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                %5 : int = invoke %3 @"java.lang.Integer::intValue()int";
                 %6 : int = add %5 %4;
                 %7 : java.lang.Integer = invoke %6 @"java.lang.Integer::valueOf(int)java.lang.Integer";
                 var.store %2 %7;
@@ -132,7 +132,7 @@ static class Box {
                 %1 : BoxingConversionTest$Box = new @"func<BoxingConversionTest$Box>";
                 %2 : java.lang.Integer = field.load %1 @"BoxingConversionTest$Box::i()java.lang.Integer";
                 %3 : int = constant @"1";
-                %4 : int = invoke %2 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                %4 : int = invoke %2 @"java.lang.Integer::intValue()int";
                 %5 : int = add %4 %3;
                 %6 : java.lang.Integer = invoke %5 @"java.lang.Integer::valueOf(int)java.lang.Integer";
                 field.store %1 %6 @"BoxingConversionTest$Box::i()java.lang.Integer";
@@ -149,7 +149,7 @@ void test7() {
                 %1 : BoxingConversionTest$Box = new @"func<BoxingConversionTest$Box>";
                 %2 : java.lang.Integer = field.load %1 @"BoxingConversionTest$Box::i()java.lang.Integer";
                 %3 : int = constant @"3";
-                %4 : int = invoke %2 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                %4 : int = invoke %2 @"java.lang.Integer::intValue()int";
                 %5 : int = add %4 %3;
                 %6 : java.lang.Integer = invoke %5 @"java.lang.Integer::valueOf(int)java.lang.Integer";
                 field.store %1 %6 @"BoxingConversionTest$Box::i()java.lang.Integer";
@@ -169,7 +169,7 @@ void test8() {
                 %6 : int = constant @"0";
                 %7 : int = array.load %5 %6;
                 %8 : java.lang.Integer = var.load %4;
-                %9 : int = invoke %8 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                %9 : int = invoke %8 @"java.lang.Integer::intValue()int";
                 %10 : int = add %7 %9;
                 array.store %5 %6 %10;
                 return;
@@ -191,7 +191,7 @@ void test9(int[] ia, Integer i) {
                     }
                     ^truepart()int -> {
                         %7 : java.lang.Integer = var.load %4;
-                        %8 : int = invoke %7 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                        %8 : int = invoke %7 @"java.lang.Integer::intValue()int";
                         yield %8;
                     }
                     ^falsepart()int -> {
@@ -222,7 +222,7 @@ void test10(boolean cond, Integer I) {
                     }
                     ^falsepart()int -> {
                         %8 : java.lang.Integer = var.load %4;
-                        %9 : int = invoke %8 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                        %9 : int = invoke %8 @"java.lang.Integer::intValue()int";
                         yield %9;
                     };
                 %10 : Var<int> = var %5 @"res";
@@ -305,7 +305,7 @@ void test14() {
                     }
                     ()int -> {
                         %10 : java.lang.Integer = var.load %4;
-                        %11 : int = invoke %10 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                        %11 : int = invoke %10 @"java.lang.Integer::intValue()int";
                         yield %11;
                     }
                     ^defaultCaseLabel()void -> {
@@ -347,7 +347,7 @@ void test15(int i, Integer I) {
                     }
                     ()int -> {
                         %11 : java.lang.Integer = var.load %4;
-                        %12 : int = invoke %11 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                        %12 : int = invoke %11 @"java.lang.Integer::intValue()int";
                         yield %12;
                     };
                 %13 : Var<int> = var %6 @"x";
@@ -410,7 +410,7 @@ void test17(int i) {
                     }
                     ()int -> {
                         %10 : java.lang.Integer = var.load %4;
-                        %11 : int = invoke %10 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                        %11 : int = invoke %10 @"java.lang.Integer::intValue()int";
                         java.yield %11;
                     }
                     ^defaultCaseLabel()void -> {
@@ -452,7 +452,7 @@ void test18(int i, Integer I) {
                     }
                     ()int -> {
                         %11 : java.lang.Integer = var.load %4;
-                        %12 : int = invoke %11 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                        %12 : int = invoke %11 @"java.lang.Integer::intValue()int";
                         java.yield %12;
                     };
                 %13 : Var<int> = var %6 @"x";
@@ -508,7 +508,7 @@ void test20(int i) {
                 %4 : Var<java.lang.Integer> = var %2 @"I";
                 %5 : int = var.load %3;
                 %6 : java.lang.Integer = var.load %4;
-                %7 : int = invoke %6 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                %7 : int = invoke %6 @"java.lang.Integer::intValue()int";
                 %8 : int = add %5 %7;
                 %9 : Var<int> = var %8 @"l";
                 return;
diff --git a/test/langtools/tools/javac/reflect/LambdaTest.java b/test/langtools/tools/javac/reflect/LambdaTest.java
index baaf835376f..eb5434eca23 100644
--- a/test/langtools/tools/javac/reflect/LambdaTest.java
+++ b/test/langtools/tools/javac/reflect/LambdaTest.java
@@ -139,7 +139,7 @@ void test4() {
                     %20 : int = var.load %3;
                     %21 : java.util.function.Supplier<java.lang.Integer> = var.load %19;
                     %22 : java.lang.Integer = invoke %21 @"java.util.function.Supplier::get()java.lang.Object";
-                    %23 : int = invoke %22 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                    %23 : int = invoke %22 @"java.lang.Integer::intValue()int";
                     %24 : int = add %20 %23;
                     %25 : Var<int> = var %24 @"r";
                     %26 : int = var.load %25;
diff --git a/test/langtools/tools/javac/reflect/MethodReferenceTest.java b/test/langtools/tools/javac/reflect/MethodReferenceTest.java
index 58864c45cc3..2f3c762e7cd 100644
--- a/test/langtools/tools/javac/reflect/MethodReferenceTest.java
+++ b/test/langtools/tools/javac/reflect/MethodReferenceTest.java
@@ -152,7 +152,7 @@ static class X {
                 %1 : java.util.function.Function<java.lang.Integer, MethodReferenceTest$X> = lambda (%2 : java.lang.Integer)MethodReferenceTest$X -> {
                     %3 : Var<java.lang.Integer> = var %2 @"x$0";
                     %4 : java.lang.Integer = var.load %3;
-                    %5 : int = invoke %4 @"java.lang.Integer::intValue(java.lang.Integer)int";
+                    %5 : int = invoke %4 @"java.lang.Integer::intValue()int";
                     %6 : MethodReferenceTest$X = new %5 @"func<MethodReferenceTest$X, int>";
                     return %6;
                 };