/** * Overrides the version of DataType to recurse on all DataType child elements that may have been * added. * * @param stk the stack of data types to use (recursively). * @param p the project to use to dereference the references. * @throws BuildException on error. */ protected synchronized void dieOnCircularReference(Stack<Object> stk, Project p) throws BuildException { if (isChecked()) { return; } if (isReference()) { super.dieOnCircularReference(stk, p); } else { if (union != null) { pushAndInvokeCircularReferenceCheck(union, stk, p); } setChecked(true); } }