In a generic type or method, there is an abs node and the abs node has a child that represents the normal decl for the object. When we encounter a use of the class or method, we should ref the abs node, but currently the java indexer refs the decl node.
I think the problem is that we get the node to ref from getJavaNode(Symbol sym) and the node for that symbol cannot be an abs node because of how the symbol's node is created. One solution is to change how we create nodes. In Java, it seems like we create the node and populate its facts all at once. For C++, we do it bit by bit, so you can create a node and then specify facts and edges later when you know more.