def signature=(contract_hash)
      raise ArgumentError unless contract_hash.length == 1
      sig_accepts, sig_returns = [ contract_hash.keys.first, contract_hash.values.first ].map { |v| Array(v) }
      self.accepts = sig_accepts
      self.returns = sig_returns
    end
def signature=(contract_hash)
      raise ArgumentError unless contract_hash.length == 1
      sig_accepts, sig_returns = [ contract_hash.keys.first, contract_hash.values.first ].map { |v| Array(v) }
      self.accepts = sig_accepts
      self.returns = sig_returns
    end
Accepts signatures of the form:
   Clause => Clause
   [ Clause, Clause ] => Clause