1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
  
     | 
    
      // 5, 28 -> 5, 30  replaceAll = true, removeDeclaration = true
package p;
class TestInlineMethodRef_Cast {
	private static int m(int x) {
		return x++;
	}
	private FI fun3() {
		F a = o -> null;
		return a.bar((FI) TestInlineMethodRef_Cast::m); // [1]
	}
	private Object fun5() {
		Object o = (FI) TestInlineMethodRef_Cast::m; // [2]
		F fx = (z) -> {
			z = (FI) TestInlineMethodRef_Cast::m; // [3]
			return null;
		};
		Object fi2;
		fi2 = (FI) TestInlineMethodRef_Cast::m; // [4]
		Object[] b = new Object[] { (FI) TestInlineMethodRef_Cast::m, (FI) TestInlineMethodRef_Cast::m }; // [5]
		Object[][] c = new Object[][] { { (FI) TestInlineMethodRef_Cast::m }, { (FI) TestInlineMethodRef_Cast::m } }; // [6]
		Object[] d = { (FI) TestInlineMethodRef_Cast::m, (FI) TestInlineMethodRef_Cast::m }; // [7]
		Object[][] e = { { (FI) TestInlineMethodRef_Cast::m }, { (FI) TestInlineMethodRef_Cast::m } }; // [8]
		System.out.println((FI) TestInlineMethodRef_Cast::m); // [9]
		Object fi4 = true ? (FI) TestInlineMethodRef_Cast::m : (FI) TestInlineMethodRef_Cast::m; // [10]
		System.out.println(true ? (FI) TestInlineMethodRef_Cast::m : (FI) TestInlineMethodRef_Cast::m); // [11]
		int x2 = ((FI) TestInlineMethodRef_Cast::m).foo(10); // [12]
		return (FI) TestInlineMethodRef_Cast::m; // [13]
	}
}
@FunctionalInterface
interface FI {
	int foo(int x);
}
@FunctionalInterface
interface F {
	FI bar(Object o);
} 
     |