/**
  * Returns all child tags that actually exist that correspond to TagPath. Written in anger by Wes
  * in response to the ridiculous Temporary Tags.
  *
  * @param TagPath The path from which to retrieve the tags.
  * @return All child tags that correspond to TagPath.
  */
 public XMLTag[] getRealTags(String TagPath) {
   if (TagPath.startsWith("/")) {
     return getRootTag().getTags(TagPath.substring(1));
   }
   if (TagPath.trim().equals("")) {
     return getTags();
   }
   String[] TempStrings = TagPath.split("/", 2);
   if (TempStrings.length == 1) {
     if (TagPath.equals(".") || (this instanceof XMLFile && TagPath.equals(TagName))) {
       return new XMLTag[] {this};
     } else if (TagPath.equals("..")) {
       if (ParentTag != null) {
         return new XMLTag[] {ParentTag};
       } else {
         return new XMLTag[0];
       }
     } else if (TagPath.equals("*")) {
       return (XMLTag[]) ChildTags.toArray(new XMLTag[0]);
     }
     ArrayList TemporaryStore = new ArrayList();
     // XMLTag[] Result = new XMLTag[0];
     for (int i = 0; i < ChildTags.size(); i++) {
       XMLTag TempTag = (XMLTag) ChildTags.get(i);
       if (!TempTag.isTemporary()) {
         if (TempTag.getName().equals(TagPath)) {
           TemporaryStore.add(TempTag);
         }
       }
     }
     return (XMLTag[]) TemporaryStore.toArray(new XMLTag[0]);
   } else {
     XMLTag[] Result = getTags(TempStrings[0]);
     ArrayList TemporaryStore = new ArrayList();
     for (int i = 0; i < Result.length; i++) {
       TemporaryStore.addAll(Arrays.asList(Result[i].getTags(TempStrings[1])));
     }
     return (XMLTag[]) TemporaryStore.toArray(new XMLTag[0]);
   }
 }