class RSpec::Support::MethodSignatureVerifier

def with_expectation(expectation) # rubocop:disable Metrics/MethodLength

rubocop:disable Metrics/MethodLength
def with_expectation(expectation) # rubocop:disable Metrics/MethodLength
  return self unless MethodSignatureExpectation === expectation
  if expectation.empty?
    @min_non_kw_args = @max_non_kw_args = @non_kw_args = nil
    @kw_args     = []
  else
    @min_non_kw_args = @non_kw_args = expectation.min_count || 0
    @max_non_kw_args                = expectation.max_count || @min_non_kw_args
    if RubyFeatures.optional_and_splat_args_supported?
      @unlimited_args = expectation.expect_unlimited_arguments
    else
      @unlimited_args = false
    end
    if RubyFeatures.kw_args_supported?
      @kw_args           = expectation.keywords
      @arbitrary_kw_args = expectation.expect_arbitrary_keywords
    else
      @kw_args           = []
      @arbitrary_kw_args = false
    end
  end
  self
end