for (int i = 0; i < thatSize; i++) { if (that.get(thatSize - 1 - i).equals(get(thisSize - 1 - i))) continue; return false;
CompositeName thisp = this; CompositeName thatp = that; for (int i = thatSize; i>0; i--) { CompositeName thisel = thisp.last(); CompositeName thatel = thisp.last(); if (! thisel.equals(thatel)) { return false; } thisp = thisp.getPrefix(); thatp = thatp.getPrefix();
  public boolean endsWith(CompositeName that) {    int thatSize = that.size();    int thisSize = size();    if (thatSize > thisSize) return false; // test name has too many components    for (int i = 0; i < thatSize; i++) {      if (that.get(thatSize - 1 - i).equals(get(thisSize - 1 - i))) continue;      return false;    }    return true;  }