@Override
public boolean isAssignable(TypeMirror t1, TypeMirror t2) {
if (!(t1 instanceof TypeMirrorImpl) || !(t2 instanceof TypeMirrorImpl)) {
return false;
}
Binding b1 = ((TypeMirrorImpl)t1).binding();
Binding b2 = ((TypeMirrorImpl)t2).binding();
if (!(b1 instanceof TypeBinding) || !(b2 instanceof TypeBinding)) {
// package, method, import, etc.
throw new IllegalArgumentException();
}
if (((TypeBinding)b1).isCompatibleWith((TypeBinding)b2)) {