def new(*args, &block)
      instance = allocate.tap { |obj| obj.__send__(:initialize, *args, &block) }
      IceNine.deep_freeze(instance)
    end
def new(*args, &block)
      instance = allocate.tap { |obj| obj.__send__(:initialize, *args, &block) }
      IceNine.deep_freeze(instance)
    end
Reloads instance's constructor to make it immutable

 @api private

 @param [Object, Array<Object>] args
 @param [Proc] block

 @return [Object]