/**
   * Recursively traverse all elements with stencil representations and register them - and parent
   * relationships between them - on export context
   *
   * @param element
   */
  private void registerResourcesRecursive(XFormsElement element, XFormsElement parent) {
    context.registerResource(element, parent);

    if (element instanceof UIElementContainer) {
      for (XFormsUIElement child : ((UIElementContainer) element).getChildElements()) {
        registerResourcesRecursive(child, element);
      }
    }
    if (element instanceof ListUICommonContainer) {
      for (ListUICommon child : ((ListUICommonContainer) element).getListUICommons()) {
        registerResourcesRecursive(child, element);
      }
    }
    if (element instanceof ActionContainer) {
      for (AbstractAction child : ((ActionContainer) element).getActions()) {
        registerResourcesRecursive(child, element);
      }
    }
    if (element instanceof Switch) {
      for (Case child : ((Switch) element).getCases()) {
        registerResourcesRecursive(child, element);
      }
    }
    if (element instanceof LabelContainer) {
      Label label = ((LabelContainer) element).getLabel();
      if (label != null) registerResourcesRecursive(label, element);
    }
    if (element instanceof UICommonContainer) {

      Help help = ((UICommonContainer) element).getHelp();
      if (help != null) registerResourcesRecursive(help, element);

      Hint hint = ((UICommonContainer) element).getHint();
      if (hint != null) registerResourcesRecursive(hint, element);

      Alert alert = ((UICommonContainer) element).getAlert();
      if (alert != null) registerResourcesRecursive(alert, element);
    }
  }