private List<AbstractIntrospector> getContexts() {
      if (myContexts != null) {
        return myContexts;
      }
      final List<AbstractIntrospector> parents = new ArrayList<>();
      final AntDomMacroDef macroDef = myElement.getParentOfType(AntDomMacroDef.class, true);
      if (macroDef != null) {
        final AntDomSequentialTask body = macroDef.getMacroBody();
        if (body != null) {
          body.accept(new AntDomRecursiveVisitor() {
            @Override
            public void visitAntDomCustomElement(AntDomCustomElement custom) {
              if (myElement.equals(custom.getDeclaringElement())) {
                final AntDomElement parent = custom.getParentOfType(AntDomElement.class, true);
                if (parent != null) {
                  final Class type = parent.getChildDescription().getUserData(ELEMENT_IMPL_CLASS_KEY);
                  if (type != null) {
                    final AntIntrospector antIntrospector = AntIntrospector.getInstance(type);
                    if (antIntrospector != null) {
                      parents.add(new ClassIntrospectorAdapter(antIntrospector));
                    }
                  }
                }
              }
            }
          });
        }
      }
      return myContexts = parents;
    }
private List<AbstractIntrospector> getContexts()