void disposeCOMInterfaces() {
   if (supports != null) {
     supports.dispose();
     supports = null;
   }
   if (promptAuth != null) {
     promptAuth.dispose();
     promptAuth = null;
   }
 }
  int QueryInterface(long /*int*/ riid, long /*int*/ ppvObject) {
    if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
    nsID guid = new nsID();
    XPCOM.memmove(guid, riid, nsID.sizeof);

    if (guid.Equals(nsISupports.NS_ISUPPORTS_IID)) {
      XPCOM.memmove(ppvObject, new long /*int*/[] {supports.getAddress()}, C.PTR_SIZEOF);
      AddRef();
      return XPCOM.NS_OK;
    }
    if (guid.Equals(XPCOM.NS_IAUTHPROMPT2_IID)) {
      XPCOM.memmove(ppvObject, new long /*int*/[] {promptAuth.getAddress()}, C.PTR_SIZEOF);
      AddRef();
      return XPCOM.NS_OK;
    }

    XPCOM.memmove(ppvObject, new long /*int*/[] {0}, C.PTR_SIZEOF);
    return XPCOM.NS_ERROR_NO_INTERFACE;
  }
 long /*int*/ getAddress() {
   return promptAuth.getAddress();
 }