AntDomElement (final AntDomElement parentElement, final XmlName customElementName) { final AntDomElement declaration = myDeclarations.get(customElementName); if (declaration == null) { return null; } if (declaration instanceof AntDomMacrodefElement) { final Pair<AntDomMacroDef, AntDomScriptDef> contextMacroOrScriptDef = getContextMacroOrScriptDef(parentElement); final AntDomMacroDef macrodefUsed = Pair.getFirst(contextMacroOrScriptDef); if (macrodefUsed == null || !macrodefUsed.equals(declaration.getParentOfType(AntDomMacroDef.class, true))) { return null; } } else if (declaration instanceof AntDomScriptdefElement) { final Pair<AntDomMacroDef, AntDomScriptDef> contextMacroOrScriptDef = getContextMacroOrScriptDef(parentElement); final AntDomScriptDef scriptDefUsed = Pair.getSecond(contextMacroOrScriptDef); if (scriptDefUsed == null || !scriptDefUsed.equals(declaration.getParentOfType(AntDomScriptDef.class, true))) { return null; } } return declaration; }