When while resolving a type "MyType", JavaSource.resolveTypeInternal has an "import my.package.name.MyType", the result is "my.package.name.MyType". This is wrong in cases when name denotes a class, not a package. In this case the result should be "my.package.name$MyType". This is because of line 168:
if (imports[i].endsWith("." + typeName)) return imports[i];
Also, "name.MyType" is being resolved to "my.package.name.MyType", which is wrong according to the Java Language Spec (JLS) [1], as one cannot import subpackages.
The attached patch changes the resolution to follow the JLS. Since one cannot decide if a type "MyType" should be resolved to "my.package.name.MyType" or "my.package.name$MyType" without having the actual classes, some cases where resolution returned a (possibly incorrect) result now return null (see "corrected" test cases).
[1] http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.5.1
patch applied - thanks.