public boolean next() {
if (!iter.hasNext()) {
return true;
}
Block nextRail = iter.next();
BlockLocation newNodeLocation;
String newNodeName;
boolean hasFinished = false;
for (Block signblock : Util.getSignsFromRails(nextRail)) {
SignActionEvent event = new SignActionEvent(signblock);
if (event.getMode() != SignActionMode.NONE) {
if (event.isType("tag", "switcher")){
newNodeLocation = new BlockLocation(nextRail);
newNodeName = newNodeLocation.toString();
} else if (event.isType("destination")) {
newNodeLocation = new BlockLocation(nextRail);
newNodeName = event.getLine(2);
} else if (event.isType("blocker") && event.isWatchedDirection(iter.currentDirection()) && event.isPowerAlwaysOn()) {
hasFinished = true;
break;
} else {