public static bool LowerRank( Rank rank ) {
if( rank == null ) throw new ArgumentNullException( "rank" );
if( rank == Ranks.Last() ) {
return false;
}
Rank nextRankDown = Ranks[rank.Index + 1];
Ranks[rank.Index + 1] = rank;
Ranks[rank.Index] = nextRankDown;
RebuildIndex();
return true;
}