The tree generated by treeMaker.QualIdent(syms.stringType.tsym) has one too many selects in it. Between TreeMaker.QualIdent and Treemaker.isUnqualifiable, the tree generation climbs up to the enclosing package of "java" because isUnqualifiable is stopping based on looking for the symbol's owner to be null which doesn't happen with the symbol for "java". Please see the attached test program.
test : JCFieldAccess,SELECT,MEMBER_SELECT type:java.lang.String sym:java.lang.String
src: .java.lang.String
selected: JCFieldAccess,SELECT,MEMBER_SELECT type:java.lang sym:java.lang
src: .java.lang
selected: JCFieldAccess,SELECT,MEMBER_SELECT type:java sym:java
src: .java
selected: JCIdent,IDENT,IDENTIFIER type: sym:
src:
name:
test : JCFieldAccess,SELECT,MEMBER_SELECT type:java.lang.String sym:java.lang.String
src: .java.lang.String
selected: JCFieldAccess,SELECT,MEMBER_SELECT type:java.lang sym:java.lang
src: .java.lang
selected: JCFieldAccess,SELECT,MEMBER_SELECT type:java sym:java
src: .java
selected: JCIdent,IDENT,IDENTIFIER type: sym:
src:
name: