module T::Private::Methods

def self.declare_sig(mod, arg, &blk)

def self.declare_sig(mod, arg, &blk)
  install_hooks(mod)
  if T::Private::DeclState.current.active_declaration
    T::Private::DeclState.current.reset!
    raise "You called sig twice without declaring a method in between"
  end
  if !arg.nil? && arg != :final
    raise "Invalid argument to `sig`: #{arg}"
  end
  loc = caller_locations(2, 1).first
  T::Private::DeclState.current.active_declaration = DeclarationBlock.new(mod, loc, blk, arg == :final)
  nil
end