class RuboCop::Cop::Sorbet::SignatureBuildOrder

def on_signature(node)

def on_signature(node)
  calls = call_chain(node.children[2]).map(&:method_name)
  return if calls.empty?
  # While the developer is typing, we may have an incomplete call statement, which means `ORDER[call]` will
  # return `nil`. In that case, invoking `sort_by` will raise
  return if calls.any? { |call| ORDER[call].nil? }
  expected_order = calls.sort_by { |call| ORDER[call] }
  return if expected_order == calls
  message = "Sig builders must be invoked in the following order: #{expected_order.join(", ")}."
  unless can_autocorrect?
    message += " For autocorrection, add the `unparser` gem to your project."
  end
  add_offense(
    node.children[2],
    message: message,
  )
  node
end