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: update_visibility_level.rb
    path of file: ./repos/gitlabhq/app/services/concerns
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

module UpdateVisibilityLevel
  # check that user is allowed to set specified visibility_level
  def valid_visibility_level_change?(target, new_visibility)
    return true unless new_visibility

    new_visibility_level = Gitlab::VisibilityLevel.level_value(new_visibility, fallback_value: nil)

    if new_visibility_level != target.visibility_level_value
      unless can?(current_u
    
  def valid_visibility_level_change?(target, new_visibility)
    return true unless new_visibility

    new_visibility_level = Gitlab::VisibilityLevel.level_value(new_visibility, fallback_value: nil)

    if new_visibility_level != target.visibility_level_value
      unless can?(current_user, :change_visibility_level, target) &&
          Gitlab::VisibilityLevel.allowed_for?(current_user, new_visibility_level)

        deny_visibility_level(target, new_visibility_level)
        return false
      end