return in_reverse? (right > left) - (right < left) : (left > right) - (left < right);
return left < right ? -greater : left > right ? greater : 0;