After taking another look at the code, I've made a fatal mistake.
The nodeSet map is mapping class types to node:
Map<Class<? extends Node>, Node[]> nodeSet; //should be named nodeSetMap
But in initCurrentSet, I told you to do nodeSet.get(node), when node is an instance of the class, not the class type (since allNodes.values() returns a Set<Node> and not a Set<Class<? extends Node>>).
Map<Class<? extends Node>, Node> allNodes;
for(Node node : allNodes.values()) {
if(node.canProcess()) {
currentNodeSet = nodeSet.get(node);
break;
}
}
What I told you before (the code I just showed) should have actually generated a compiler error.
On top of that, I found a few little mistakes I didn't tend to (such as validating that you actually specified nodes in @Linked), so try this out:
http://pastebin.com/QHTEg53H
It's still messy. The fixes I added were quick fixes (making the design look even messier), but I'm cleaning this up as we speak, since apparently a re-upload is much needed. Let me know if the new LinkerManager works for you!
And thank you for finding these problems for me. As I've said before, I've never actually ran this. I released it shortly after the person who requested it told me he got it working (with a few minor tweaks). Never release without testing X_X