protected void compareNames(
      final String message,
      final lotus.domino.Name l,
      final org.openntf.domino.Name o,
      final NotesBug... notesbug)
      throws NotesException {

    assertEquals(message + ": getAddr821()", l.getAddr821(), o.getAddr821());
    assertEquals(
        message + ": getAddr822Comment1()", l.getAddr822Comment1(), o.getAddr822Comment1());
    assertEquals(
        message + ": getAddr822Comment2()", l.getAddr822Comment2(), o.getAddr822Comment2());
    assertEquals(
        message + ": getAddr822Comment3()", l.getAddr822Comment3(), o.getAddr822Comment3());

    assertEquals(
        message + ": getAddr822LocalPart()", l.getAddr822LocalPart(), o.getAddr822LocalPart());
    assertEquals(message + ": getAddr822Phrase()", l.getAddr822Phrase(), o.getAddr822Phrase());
    assertEquals(message + ": getADMD()", l.getADMD(), o.getADMD());

    assertEquals(message + ": getCommon()", l.getCommon(), o.getCommon());

    assertEquals(message + ": getCountry()", l.getCountry(), o.getCountry());
    assertEquals(message + ": getGeneration()", l.getGeneration(), o.getGeneration());
    assertEquals(message + ": getGiven()", l.getGiven(), o.getGiven());
    assertEquals(message + ": getInitials()", l.getInitials(), o.getInitials());
    assertEquals(message + ": isHierarchical()", l.isHierarchical(), o.isHierarchical());

    // assertEquals(message + ": getKeyword()", l.getKeyword(), o.getKeyword());
    assertEquals(message + ": getLanguage()", l.getLanguage(), o.getLanguage());

    if (!NotesBug.O.isPresent(notesbug))
      assertEquals(message + ": getOrganization()", l.getOrganization(), o.getOrganization());
    if (!NotesBug.OUs.isPresent(notesbug)) {
      assertEquals(message + ": getOrgUnit1()", l.getOrgUnit1(), o.getOrgUnit1());
      assertEquals(message + ": getOrgUnit2()", l.getOrgUnit2(), o.getOrgUnit2());

      assertEquals(message + ": getOrgUnit3()", l.getOrgUnit3(), o.getOrgUnit3());
      assertEquals(message + ": getOrgUnit4()", l.getOrgUnit4(), o.getOrgUnit4());
    }
    assertEquals(message + ": getPRMD()", l.getPRMD(), o.getPRMD());
    assertEquals(message + ": getSurname()", l.getSurname(), o.getSurname());

    // TODO: it seems that getCanonical + getAbbreviated returns the original string, if the name is
    // invalid
    assertEquals(message + ": getCanonical()", l.getCanonical(), o.getCanonical());
    assertEquals(message + ": getAbbreviated()", l.getAbbreviated(), o.getAbbreviated());
  }