You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: exclusion_of.rb
    path of file: ./repos/mongoid-rspec/lib/matchers/validations
    
    the code of the file until where you have to start completion: module Mongoid
  module Matchers
    module Validations
      class ValidateExclusionOfMatcher < HaveValidationMatcher
        def initialize(name)
          super(name, :exclusion)
        end

        def to_not_allow(*values)
          @not_allowed_values = [values].flatten
          self
        end

        def matches?(actual)
          return false unless result = super(actual)

          if @not_allowed_values
            raw_validator_not_allowed_values = @
    
        def matches?(actual)
          return false unless result = super(actual)

          if @not_allowed_values
            raw_validator_not_allowed_values = @validator.options[:in]

            validator_not_allowed_values = case raw_validator_not_allowed_values
                                           when Range then raw_validator_not_allowed_values.to_a
                                           when Proc then raw_validator_not_allowed_values.call(actual)
                                           else raw_validator_not_allowed_values end

            allowed_values = @not_allowed_values - validator_not_allowed_values
            if allowed_values.empty?
              @positive_result_message = @positive_result_message << ' not allowing all values mentioned'
            else
              @negative_result_message = @negative_result_message << " allowing the following the ff. values: #{allowed_values.inspect}"
              result = false
            end