class Date::Infinity

def <=>(other)

def <=>(other)
  case other
  when Infinity; return d <=> other.d
  when Numeric; return d
  else
    begin
      l, r = other.coerce(self)
      return l <=> r
    rescue NoMethodError
    end
  end
  nil
end