* Returns: negative value if the rank of p1 > the rank of p2 or the ranks are
* equal but the name of p1 comes before the name of p2; zero if the rank
* and names are equal; positive value if the rank of p1 < the rank of p2 or the
* Returns: negative value if the rank of p1 > the rank of p2 or the ranks are
* equal but the name of p1 comes before the name of p2; zero if the rank
* and names are equal; positive value if the rank of p1 < the rank of p2 or the