module T::Props::Constructor::DecoratorMethods

def construct_props_without_defaults(instance, hash)

def construct_props_without_defaults(instance, hash)
  @props_without_defaults&.count do |p, setter_proc|
    begin
      val = hash[p]
      instance.instance_exec(val, &setter_proc)
      val || hash.key?(p)
    rescue TypeError, T::Props::InvalidValueError
      if !hash.key?(p)
        raise ArgumentError.new("Missing required prop `#{p}` for class `#{instance.class.name}`")
      else
        raise
      end
    end
  end || 0
end