module T

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

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

def self.any(type_a, type_b, *types); end

def self.any(type_a, type_b, *types); end

def self.assert_type!(value, type, checked: true); value; end

def self.assert_type!(value, type, checked: true); value; end

def self.bind(value, type, checked: true); value; end

def self.bind(value, type, checked: true); value; end

def self.cast(value, type, checked: true); value; end

def self.cast(value, type, checked: true); value; end

def self.class_of(klass); end

def self.class_of(klass); end

def self.enum(values); end

def self.enum(values); end

def self.let(value, type, checked: true); value; end

def self.let(value, type, checked: true); value; end

def self.must(arg, msg=nil); arg; end

def self.must(arg, msg=nil); arg; end

def self.nilable(type); end

def self.nilable(type); end

def self.noreturn; end

def self.noreturn; end

def self.proc; end

def self.proc; end

def self.reveal_type(value); value; end

def self.reveal_type(value); value; end

def self.self_type; end

def self.self_type; end

def self.type_alias(type=nil, &blk); end

def self.type_alias(type=nil, &blk); end

def self.type_parameter(name); end

def self.type_parameter(name); end

def self.unsafe(value); value; end

def self.unsafe(value); value; end

def self.untyped; end

def self.untyped; end