Compares two candidate objects to determine their relative priority.
The implementation should be consistent with the standard comparison contract:
If Compare(x,y) returns negative, then Compare(y,x) should return positive
If Compare(x,y) returns zero, then Compare(y,x) should return zero
If Compare(x,y) returns positive, then Compare(y,x) should return negative
ParametersaThe first candidate object to compare
bThe second candidate object to compare
ReturnsA negative value if a should be prioritized over b, zero if they have equal priority, or a positive value if b should be prioritized over a