public void validate(QueryAxis axis) { final QueryAxis resolved = (QueryAxis) resolvedNodes.get(axis); if (resolved != null) { return; // already resolved } try { stack.push(axis); resolvedNodes.put(axis, placeHolder); axis.resolve(this); resolvedNodes.put(axis, axis); } finally { stack.pop(); } }