implements comprateTo