module T

def self.all(type_a, type_b, *types)

T.all(, , ...) -- matches an object that has all of the types listed
def self.all(type_a, type_b, *types)
  T::Types::Intersection.new([type_a, type_b] + types)
end