When findVirtual (etc.) is presented with the special name <init>, the answer should always be the same as if some other illegal name (<foo>) were presented, regardless of whether there happens to be a matching constructor present.
This is a gray area in the JSR 292 spec.
The existing OpenJDK behavior is to refuse to admit that a "method" named <init> exists. We will document this behavior as the standard.