class T::Private::Methods::DeclBuilder

def soft(notify:)

def soft(notify:)
  if T.unsafe(true)
    raise "The .soft API is unstable, so we don't want it used until we redesign it. To change Sorbet's runtime behavior, see https://sorbet.org/docs/tconfiguration"
  end
  check_live!
  if !decl.soft_notify.equal?(ARG_NOT_PROVIDED)
    raise BuilderError.new("You can't call .soft multiple times in a signature.")
  end
  if !decl.checked.equal?(ARG_NOT_PROVIDED)
    raise BuilderError.new("You can't use .soft with .checked.")
  end
  if !decl.generated.equal?(ARG_NOT_PROVIDED)
    raise BuilderError.new("You can't use .soft with .generated.")
  end
  # TODO consider validating that :notify is a project that sentry knows about,
  # as per https://git.corp.stripe.com/stripe-internal/pay-server/blob/master/lib/event/job/sentry_job.rb#L125
  if !notify || notify == ''
    raise BuilderError.new("You can't provide an empty notify to .soft().")
  end
  decl.soft_notify = notify
  self
end