code: private ResolvedType solveDotExpressionType(ResolvedReferenceTypeDeclaration parentType, FieldAccessExpr node) {
          // Fields and internal type declarations cannot have the same name.
          // Thus, these checks will always be mutually exclusive.
          if (parentType.hasField(node.getName().getId())) {
              return parentType.getField(node.getName().getId()).getType();
          } else if (parentType.hasInternalType(node.getName().getId())) {
              return new ReferenceTypeImpl(parentType.getInternalType(node.getName().getId()), typeSolver);
          } else {
              throw new UnsolvedSymbolException(node.getName().getId());
          }
      }
docs: Java Parser can't differentiate between packages, internal types, and fields.
  All three are lumped together into FieldAccessExpr. We need to differentiate them.