module T::Types::ProcBindPatch

def initialize(arg_types, returns, bind = T::Private::Methods::ARG_NOT_PROVIDED)

def initialize(arg_types, returns, bind = T::Private::Methods::ARG_NOT_PROVIDED)
  super(arg_types, returns)
  unless bind == T::Private::Methods::ARG_NOT_PROVIDED
    @bind = T.let(T::Utils.coerce(bind), T::Types::Base)
  end
end

def name

def name
  name = super
  name = name.sub("T.proc", "T.proc.bind(#{@bind})") unless @bind.nil?
  name
end