Given the following test case:
```
import java.util.function.Supplier;
interface Main {
interface X<T> {
X<T> self();
}
static X<?> makeX() {return null;}
static <R> X<R> create(Supplier<? extends R> supplier) {return null;}
static X<X<?>> methodRef() {
return create(Main::makeX).self();
}
static X<X<?>> lambda() {
return create(() -> makeX()).self();
}
}
```
javac reports an error for the lambda, but not for the method reference. There should be no difference here (error in both cases)
reported by Tagir at: https://mail.openjdk.org/pipermail/compiler-dev/2025-October/031680.html
```
import java.util.function.Supplier;
interface Main {
interface X<T> {
X<T> self();
}
static X<?> makeX() {return null;}
static <R> X<R> create(Supplier<? extends R> supplier) {return null;}
static X<X<?>> methodRef() {
return create(Main::makeX).self();
}
static X<X<?>> lambda() {
return create(() -> makeX()).self();
}
}
```
javac reports an error for the lambda, but not for the method reference. There should be no difference here (error in both cases)
reported by Tagir at: https://mail.openjdk.org/pipermail/compiler-dev/2025-October/031680.html
- csr for
 - 
                    
JDK-8369518 Compilation mismatch for equivalent lambda and method reference
-         
     - Finalized
 
 -         
 
- duplicates
 - 
                    
JDK-8369565 Missing capture conversion for method reference return type
-         
     - Closed
 
 -         
 
- links to
 - 
                    
        
        Review(master)
        openjdk/jdk/27737