class RuboCop::Cop::Sorbet::CallbackConditionalsBinding

def autocorrect(node)

def autocorrect(node)
  lambda do |corrector|
    options = node.each_child_node.find(&:hash_type?)
    conditional = nil
    options.each_pair do |keyword, block|
      if keyword.value == :if || keyword.value == :unless
        conditional = block
        break
      end
    end
    _, _, block = conditional.child_nodes
    # Find the class node and check if it includes a namespace on the
    # same line e.g.: Namespace::Class, which will require the fully
    # qualified name
    klass = node.ancestors.find(&:class_type?)
    expected_class = if klass.children.first.children.first.nil?
      node.parent_module_name.split("::").last
    else
      klass.identifier.source
    end
    do_end_lambda = conditional.source.include?("do") && conditional.source.include?("end")
    unless do_end_lambda
      # We are converting a one line lambda into a multiline
      # Remove the space after the `{`
      if /{\s/.match?(conditional.source)
        corrector.remove_preceding(block, 1)
      end
      # Remove the last space and `}` and re-add it with a line break
      # and the correct indentation
      base_indentation = " " * node.loc.column
      chars_to_remove = /\s}/.match?(conditional.source) ? 2 : 1
      corrector.remove_trailing(conditional, chars_to_remove)
      corrector.insert_after(block, "\n#{base_indentation}}")
    end
    # Add the T.bind
    indentation = " " * (node.loc.column + 2)
    line_start = do_end_lambda ? "" : "\n#{indentation}"
    bind = "#{line_start}T.bind(self, #{expected_class})\n#{indentation}"
    corrector.insert_before(block, bind)
  end
end