code: public int compareTo (Name other)
      {
          Integer override = overrideCompareTo(other);
          if (override != null) {
              return override;
          } else if ((override = other.overrideCompareTo(this)) != null) {
              return -override;
          }
          Class<?> c = getClass();
          Class<?> oc = other.getClass();
          if (c == oc || c.getName().equals(oc.getName())) {
              return getNormal().compareTo(other.getNormal());
          } else {
              return c.getName().compareTo(oc.getName());
          }
      }
docs: from interface Comparable<Name>