class Contracts::SetOf

def initialize(contract)

def initialize(contract)
  @contract = contract.is_a?(String) ? IsA[contract] : contract
end

def test_data

def test_data
  Set.new([], [Testable.test_data(@contract)], [Testable.test_data(@contract), Testable.test_data(@contract)])
end

def testable?

def testable?
  Testable.testable? @contract
end

def to_s

def to_s
  "a set of #{@contract}"
end

def valid?(vals)

def valid?(vals)
  return false unless vals.is_a?(Set)
  vals.all? do |val|
    res, _ = Contract.valid?(val, @contract)
    res
  end
end