def contract(meth_or_hash, contract_hash=nil)
      if meth_or_hash.is_a? Hash
        defer :contract, meth_or_hash
      else
        define_contract(meth_or_hash, contract_hash)
      end
    end
def contract(meth_or_hash, contract_hash=nil)
      if meth_or_hash.is_a? Hash
        defer :contract, meth_or_hash
      else
        define_contract(meth_or_hash, contract_hash)
      end
    end
In order for contract clauses to work in conjunction with Handshake
 proxy objects, the === method must be redefined in terms of is_a?.
 Specify an argument contract, with argument clauses on one side of the
 hash arrow and returned values on the other.  Each clause must implement
 the === method or have been created with the assert method.  This
 method should generally not be called directly.