class MethodExists {
void foo() throws Exception {
Class ca = A.class;
Class cb = B.class;
ca.getMethod("a1", int.class);
ca.getMethod("a2", int.class);
ca.getMethod("a3", int.class);
ca.getMethod("a4", int.class);
ca.getMethod("b1", int.class);
ca.getMethod("b2", int.class);
ca.getMethod("b3", int.class);
ca.getMethod("b4", int.class);
cb.getMethod("a1", int.class);
cb.getMethod("a2", int.class);
cb.getMethod("a3", int.class);
cb.getMethod("a4", int.class);
cb.getMethod("b1", int.class);
cb.getMethod("b2", int.class);
cb.getMethod("b3", int.class);
cb.getMethod("b4", int.class);
ca.getDeclaredMethod("a1", int.class);
ca.getDeclaredMethod("a2", int.class);
ca.getDeclaredMethod("a3", int.class);
ca.getDeclaredMethod("a4", int.class);
ca.getDeclaredMethod("b1", int.class);
ca.getDeclaredMethod("b2", int.class);
ca.getDeclaredMethod("b3", int.class);
ca.getDeclaredMethod("b4", int.class);
cb.getDeclaredMethod("a1", int.class);
cb.getDeclaredMethod("a2", int.class);
cb.getDeclaredMethod("a3", int.class);
cb.getDeclaredMethod("a4", int.class);
cb.getDeclaredMethod("b1", int.class);
cb.getDeclaredMethod("b2", int.class);
cb.getDeclaredMethod("b3", int.class);
cb.getDeclaredMethod("b4", int.class);
ca.getMethod("a5", String.class);
ca.getMethod("a5", String[].class);
ca.getMethod("a5", String.class, String.class);
ca.getMethod("a5", int.class);
ca.getDeclaredMethod("a5", String.class);
ca.getDeclaredMethod("a5", String[].class);
ca.getDeclaredMethod("a5", String.class, String.class);
ca.getDeclaredMethod("a5", int.class);
cb.getMethod("a5", String.class);
cb.getMethod("a5", String[].class);
cb.getMethod("a5", String.class, String.class);
cb.getMethod("a5", int.class);
cb.getDeclaredMethod("a5", String.class);
cb.getDeclaredMethod("a5", String[].class);
cb.getDeclaredMethod("a5", String.class, String.class);
cb.getDeclaredMethod("a5", int.class);
C.class.getMethod("c", int.class);
C.class.getMethod("c", boolean.class);
C.class.getMethod("d", int.class);
}
static class A {
public int a1(int n) {return n;}
protected int a2(int n) {return n;}
int a3(int n) {return n;}
private int a4(int n) {return n;}
public String a5(String s) {return s;}
public String a5(String s, String t) {return s;}
protected String a5(String[] s) {return s[0];}
}
static class B extends A {
public int b1(int n) {return n;}
protected int b2(int n) {return n;}
int b3(int n) {return n;}
private int b4(int n) {return n;}
public String b5(String s) {return s;}
public String b5(String s, String t) {return s;}
protected String b5(String[] s) {return s[0];}
}
static final class C extends A {
public int c(int n) {return n;}
}
}