mArray[otherCount] = aOther.ElementAt(otherCount);
mArray[otherCount] = ((nsISupportsArray&)aOther).ElementAt(otherCount);
NS_IMETHODIMP_(nsISupportsArray&) nsISupportsArray::operator=(const nsISupportsArray& other){  NS_ASSERTION(0, "should be an abstract method");  return *this; // bogus}NS_IMETHODIMP_(nsISupportsArray&) nsSupportsArray::operator=(const nsISupportsArray& aOther){  PRUint32 otherCount = 0;  nsresult rv = ((nsISupportsArray&)aOther).Count(&otherCount); // XXX bogus cast -- aOther should not be const  NS_ASSERTION(NS_SUCCEEDED(rv), "this method should return an error!");  if (otherCount > mArraySize) {    DeleteArray();    mArraySize = otherCount;    mArray = new nsISupports*[mArraySize];  }  else {    Clear();  }  mCount = otherCount;  while (0 < otherCount--) {    mArray[otherCount] = aOther.ElementAt(otherCount);  }  return *this;}