public static boolean xmlRegionMatchesP(Cons regionspec, Cons regiontag) {
    if (Stella_Object.eqlP(regionspec.value, regiontag.value)) {
      { PropertyList specattributes = null;
        PropertyList tagattributes = null;
        Cons specattributesource = ((Cons)(regionspec.rest.value));

        if ((specattributesource != null) &&
            (!(specattributesource == Stella.NIL))) {
          { PropertyList self000 = PropertyList.newPropertyList();

            self000.thePlist = ((Cons)(regionspec.rest.value));
            specattributes = self000;
          }
        }
        else {
          return (true);
        }
        { PropertyList self001 = PropertyList.newPropertyList();

          self001.thePlist = ((Cons)(regiontag.rest.value));
          tagattributes = self001;
        }
        { Stella_Object key = null;
          Stella_Object value = null;
          Cons iter000 = specattributes.thePlist;

          for (;!(iter000 == Stella.NIL); iter000 = iter000.rest.rest) {
            key = iter000.value;
            value = iter000.rest.value;
            if (!Stella_Object.eqlP(tagattributes.lookup(key), value)) {
              return (false);
            }
          }
        }
        return (true);
      }
    }
    else {
      return (false);
    }
  }