private void processTagWithSubTags(@Nullable XmlTag tag, XmlTag ctx, @Nullable XmlTag ref) {
    if (tag == null) return;
    tagStarted(tag, tag.getLocalName(), ctx, ref);
    XmlTag[] subTags = tag.getSubTags();
    for (XmlTag subTag : subTags) {
      processTag(subTag, tag);
    }
    tagFinished(tag);
  }
private void processTagWithSubTags(@Nullable XmlTag tag, XmlTag ctx, @Nullable XmlTag ref)