mContainer->NewWebShell(PRUint32(~0), PR_TRUE, target);
mContainer->NewWebShell(NS_CHROME_ALL_CHROME, PR_TRUE, target);
nsWebShell::GetTarget(const PRUnichar* aName){  nsAutoString name(aName);  nsIWebShell* target = nsnull;  if (0 == name.Length()) {    NS_ADDREF_THIS();    return this;  }    if (name.EqualsIgnoreCase("_blank")) {    nsIWebShell *shell;    if (NS_OK == NewWebShell(PRUint32(~0), PR_TRUE, shell))      target = shell;    else    {      //don't know what to do here? MMP      NS_ASSERTION(PR_FALSE, "unable to get new webshell");    }  }   else if (name.EqualsIgnoreCase("_self")) {    target = this;    NS_ADDREF(target);  }   else if (name.EqualsIgnoreCase("_parent")) {    GetParent(target);    if (target == nsnull) {      target = this;      NS_ADDREF(target);    }  }  else if (name.EqualsIgnoreCase("_top")) {    GetRootWebShell(target);		// this addrefs, which is OK  }  else if (name.EqualsIgnoreCase("_content")) {    // a kind of special case: only the window can answer this question    NS_ASSERTION(mContainer, "null container in WebShell::GetTarget");    if (nsnull != mContainer)      mContainer->FindWebShellWithName(aName, target);      // (and don't SetName())    // else target remains nsnull, which would be bad  }  else {    // Look from the top of the tree downward    NS_ASSERTION(mContainer, "null container in WebShell::GetTarget");    if (nsnull != mContainer) {      mContainer->FindWebShellWithName(aName, target);      if (nsnull == target) {        mContainer->NewWebShell(PRUint32(~0), PR_TRUE, target);      }      if (nsnull != target) {        target->SetName(aName);            }      else {        target = this;        NS_ADDREF(target);      }    }  }  return target;}