public static XmlGlobalAttribute makeXmlGlobalAttributeInternal(String name, String namespaceName, String namespaceUri, String surfaceForm) {
    if ((namespaceUri == null) ||
        ((namespaceName == null) ||
         (Stella.stringEqlP(namespaceUri, "") ||
          Stella.stringEqlP(namespaceName, "")))) {
      throw ((BadArgumentException)(BadArgumentException.newBadArgumentException("namespace-name and namespace must be specified").fillInStackTrace()));
    }
    { StringHashTable nsHashTable = ((StringHashTable)(Stella.$XML_GLOBAL_ATTRIBUTE_HASH_TABLE$.lookup(namespaceUri)));
      XmlAttribute attribute = null;

      if (nsHashTable == null) {
        nsHashTable = StringHashTable.newStringHashTable();
        Stella.$XML_GLOBAL_ATTRIBUTE_HASH_TABLE$.insertAt(namespaceUri, nsHashTable);
      }
      attribute = ((XmlAttribute)(nsHashTable.lookup(name)));
      if (attribute == null) {
        { XmlGlobalAttribute self002 = XmlGlobalAttribute.newXmlGlobalAttribute();

          self002.name = name;
          self002.namespaceName = namespaceName;
          self002.namespaceUri = namespaceUri;
          self002.surfaceForm = surfaceForm;
          attribute = self002;
        }
        nsHashTable.insertAt(name, attribute);
      }
      return (((XmlGlobalAttribute)(attribute)));
    }
  }