# Copyright 2014 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# For details regarding the *Flutter Fix* feature, see
# https://flutter.dev/docs/development/tools/flutter-fix

# Please add new fixes to the top of the file, separated by one blank line
# from other fixes. In a comment, include a link to the PR where the change
# requiring the fix was made.

# For documentation about this file format, see
# https://dart.dev/go/data-driven-fixes.

version: 1
transforms:

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'ScaleGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'MultiTapGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 4
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'DoubleTapGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'DelayedMultiDragGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 4
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'VerticalMultiDragGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'HorizontalMultiDragGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'ImmediateMultiDragGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'MultiDragGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'LongPressGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 4
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'ForcePressGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 6
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'EagerGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 2
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'PrimaryPointerGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 6
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'OneSequenceGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'GestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'HorizontalDragGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'VerticalDragGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 3
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/81858
  - title: "Migrate to 'supportedDevices'"
    date: 2021-05-04
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'DragGestureRecognizer'
    oneOf:
      - if: "kind != ''"
        changes:
          - kind: 'addParameter'
            index: 5
            name: 'supportedDevices'
            style: optional_named
            argumentValue:
              expression: '<PointerDeviceKind>{{% kind %}}'
              requiredIf: "kind != ''"
          - kind: 'removeParameter'
            name: 'kind'
    variables:
      kind:
        kind: 'fragment'
        value: 'arguments[kind]'

  # Changes made in https://github.com/flutter/flutter/pull/79160
  - title: "Migrate to 'dragAnchorStrategy'"
    date: 2021-04-05
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      field: 'dragAnchor'
      inClass: 'Draggable'
    changes:
      - kind: 'rename'
        newName: 'dragAnchorStrategy'

  # Changes made in https://github.com/flutter/flutter/pull/79160
  - title: "Migrate to 'dragAnchorStrategy'"
    date: 2021-04-05
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      constructor: ''
      inClass: 'Draggable'
    oneOf:
      - if: "dragAnchor == 'DragAnchor.child'"
        changes:
          - kind: 'addParameter'
            index: 9
            name: 'dragAnchorStrategy'
            style: optional_named
            argumentValue:
              expression: 'childDragAnchorStrategy'
              requiredIf: "dragAnchor == 'DragAnchor.child'"
          - kind: 'removeParameter'
            name: 'dragAnchor'
      - if: "dragAnchor == 'DragAnchor.pointer'"
        changes:
          - kind: 'addParameter'
            index: 9
            name: 'dragAnchorStrategy'
            style: optional_named
            argumentValue:
              expression: 'pointerDragAnchorStrategy'
              requiredIf: "dragAnchor == 'DragAnchor.pointer'"
          - kind: 'removeParameter'
            name: 'dragAnchor'
    variables:
      dragAnchor:
        kind: 'fragment'
        value: 'arguments[dragAnchor]'

  # Changes made in https://github.com/flutter/flutter/pull/79160
  - title: "Migrate to 'dragAnchorStrategy'"
    date: 2021-04-05
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      field: 'dragAnchor'
      inClass: 'LongPressDraggable'
    changes:
      - kind: 'rename'
        newName: 'dragAnchorStrategy'

  # Changes made in https://github.com/flutter/flutter/pull/79160
  - title: "Migrate to 'dragAnchorStrategy'"
    date: 2021-04-05
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      constructor: ''
      inClass: 'LongPressDraggable'
    oneOf:
      - if: "dragAnchor == 'DragAnchor.child'"
        changes:
          - kind: 'addParameter'
            index: 9
            name: 'dragAnchorStrategy'
            style: optional_named
            argumentValue:
              expression: 'childDragAnchorStrategy'
              requiredIf: "dragAnchor == 'DragAnchor.child'"
          - kind: 'removeParameter'
            name: 'dragAnchor'
      - if: "dragAnchor == 'DragAnchor.pointer'"
        changes:
          - kind: 'addParameter'
            index: 9
            name: 'dragAnchorStrategy'
            style: optional_named
            argumentValue:
              expression: 'pointerDragAnchorStrategy'
              requiredIf: "dragAnchor == 'DragAnchor.pointer'"
          - kind: 'removeParameter'
            name: 'dragAnchor'
    variables:
      dragAnchor:
        kind: 'fragment'
        value: 'arguments[dragAnchor]'

  # Changes made in https://github.com/flutter/flutter/pull/66482
  - title: "Migrate to 'TextSelectionThemeData'"
    date: 2020-09-24
    element:
      uris: [ 'material.dart' ]
      constructor: 'raw'
      inClass: 'ThemeData'
    oneOf:
      - if: "textSelectionColor != '' && cursorColor != '' && textSelectionHandleColor != ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(cursorColor: {% cursorColor %}, selectionColor: {% textSelectionColor %}, selectionHandleColor: {% textSelectionHandleColor %},)'
              requiredIf: "textSelectionColor != '' && cursorColor != '' && textSelectionHandleColor != ''"
          - kind: 'removeParameter'
            name: 'textSelectionColor'
          - kind: 'removeParameter'
            name: 'cursorColor'
          - kind: 'removeParameter'
            name: 'textSelectionHandleColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor == '' && cursorColor != '' && textSelectionHandleColor != ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(cursorColor: {% cursorColor %}, selectionHandleColor: {% textSelectionHandleColor %},)'
              requiredIf: "textSelectionColor == '' && cursorColor != '' && textSelectionHandleColor != ''"
          - kind: 'removeParameter'
            name: 'cursorColor'
          - kind: 'removeParameter'
            name: 'textSelectionHandleColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor != '' && cursorColor != '' && textSelectionHandleColor == ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(cursorColor: {% cursorColor %}, selectionColor: {% textSelectionColor %},)'
              requiredIf: "textSelectionColor != '' && cursorColor != '' && textSelectionHandleColor == ''"
          - kind: 'removeParameter'
            name: 'textSelectionColor'
          - kind: 'removeParameter'
            name: 'cursorColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor != '' && cursorColor == '' && textSelectionHandleColor != ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(selectionColor: {% textSelectionColor %}, selectionHandleColor: {% textSelectionHandleColor %},)'
              requiredIf: "textSelectionColor != '' && cursorColor == '' && textSelectionHandleColor != ''"
          - kind: 'removeParameter'
            name: 'textSelectionColor'
          - kind: 'removeParameter'
            name: 'textSelectionHandleColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor == '' && cursorColor != '' && textSelectionHandleColor == ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(cursorColor: {% cursorColor %})'
              requiredIf: "textSelectionColor == '' && cursorColor != '' && textSelectionHandleColor == ''"
          - kind: 'removeParameter'
            name: 'cursorColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor != '' && cursorColor == '' && textSelectionHandleColor == ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(selectionColor: {% textSelectionColor %})'
              requiredIf: "textSelectionColor != '' && cursorColor == '' && textSelectionHandleColor == ''"
          - kind: 'removeParameter'
            name: 'textSelectionColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor == '' && cursorColor == '' && textSelectionHandleColor != ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(selectionHandleColor: {% textSelectionHandleColor %})'
              requiredIf: "textSelectionColor == '' && cursorColor == '' && textSelectionHandleColor != ''"
          - kind: 'removeParameter'
            name: 'textSelectionHandleColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "useTextSelectionTheme != ''"
        changes:
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
    variables:
      textSelectionColor:
        kind: 'fragment'
        value: 'arguments[textSelectionColor]'
      cursorColor:
        kind: 'fragment'
        value: 'arguments[cursorColor]'
      textSelectionHandleColor:
        kind: 'fragment'
        value: 'arguments[textSelectionHandleColor]'
      useTextSelectionTheme:
        kind: 'fragment'
        value: 'arguments[useTextSelectionTheme]'

  # Changes made in https://github.com/flutter/flutter/pull/66482
  - title: "Migrate to 'TextSelectionThemeData'"
    date: 2020-09-24
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'ThemeData'
    oneOf:
      - if: "textSelectionColor != '' && cursorColor != '' && textSelectionHandleColor != ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(cursorColor: {% cursorColor %}, selectionColor: {% textSelectionColor %}, selectionHandleColor: {% textSelectionHandleColor %},)'
              requiredIf: "textSelectionColor != '' && cursorColor != '' && textSelectionHandleColor != ''"
          - kind: 'removeParameter'
            name: 'textSelectionColor'
          - kind: 'removeParameter'
            name: 'cursorColor'
          - kind: 'removeParameter'
            name: 'textSelectionHandleColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor == '' && cursorColor != '' && textSelectionHandleColor != ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(cursorColor: {% cursorColor %}, selectionHandleColor: {% textSelectionHandleColor %},)'
              requiredIf: "textSelectionColor == '' && cursorColor != '' && textSelectionHandleColor != ''"
          - kind: 'removeParameter'
            name: 'cursorColor'
          - kind: 'removeParameter'
            name: 'textSelectionHandleColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor != '' && cursorColor != '' && textSelectionHandleColor == ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(cursorColor: {% cursorColor %}, selectionColor: {% textSelectionColor %},)'
              requiredIf: "textSelectionColor != '' && cursorColor != '' && textSelectionHandleColor == ''"
          - kind: 'removeParameter'
            name: 'textSelectionColor'
          - kind: 'removeParameter'
            name: 'cursorColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor != '' && cursorColor == '' && textSelectionHandleColor != ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(selectionColor: {% textSelectionColor %}, selectionHandleColor: {% textSelectionHandleColor %},)'
              requiredIf: "textSelectionColor != '' && cursorColor == '' && textSelectionHandleColor != ''"
          - kind: 'removeParameter'
            name: 'textSelectionColor'
          - kind: 'removeParameter'
            name: 'textSelectionHandleColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor == '' && cursorColor != '' && textSelectionHandleColor == ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(cursorColor: {% cursorColor %})'
              requiredIf: "textSelectionColor == '' && cursorColor != '' && textSelectionHandleColor == ''"
          - kind: 'removeParameter'
            name: 'cursorColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor != '' && cursorColor == '' && textSelectionHandleColor == ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(selectionColor: {% textSelectionColor %})'
              requiredIf: "textSelectionColor != '' && cursorColor == '' && textSelectionHandleColor == ''"
          - kind: 'removeParameter'
            name: 'textSelectionColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "textSelectionColor == '' && cursorColor == '' && textSelectionHandleColor != ''"
        changes:
          - kind: 'addParameter'
            index: 73
            name: 'textSelectionTheme'
            style: optional_named
            argumentValue:
              expression: 'TextSelectionThemeData(selectionHandleColor: {% textSelectionHandleColor %})'
              requiredIf: "textSelectionColor == '' && cursorColor == '' && textSelectionHandleColor != ''"
          - kind: 'removeParameter'
            name: 'textSelectionHandleColor'
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
      - if: "useTextSelectionTheme != ''"
        changes:
          - kind: 'removeParameter'
            name: 'useTextSelectionTheme'
    variables:
      textSelectionColor:
        kind: 'fragment'
        value: 'arguments[textSelectionColor]'
      cursorColor:
        kind: 'fragment'
        value: 'arguments[cursorColor]'
      textSelectionHandleColor:
        kind: 'fragment'
        value: 'arguments[textSelectionHandleColor]'
      useTextSelectionTheme:
        kind: 'fragment'
        value: 'arguments[useTextSelectionTheme]'

  # Changes made in https://github.com/flutter/flutter/pull/65246
  - title: "Remove 'disabledThumbGapWidth'"
    date: 2020-11-17
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'RectangularSliderTrackShape'
    changes:
      - kind: 'removeParameter'
        name: 'disabledThumbGapWidth'

  # Changes made in https://github.com/flutter/flutter/pull/46115
  - title: "Migrate to 'floatingLabelBehavior'"
    date: 2020-01-15
    element:
      uris: [ 'material.dart' ]
      field: 'hasFloatingPlaceholder'
      inClass: 'InputDecorationTheme'
    changes:
      - kind: 'rename'
        newName: 'floatingLabelBehavior'

  # Changes made in https://github.com/flutter/flutter/pull/46115
  - title: "Migrate to 'floatingLabelBehavior'"
    date: 2020-01-15
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'InputDecorationTheme'
    oneOf:
      - if: "hasFloatingPlaceholder == 'true'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% FloatingLabelBehavior %}.auto'
              requiredIf: "hasFloatingPlaceholder == 'true'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
      - if: "hasFloatingPlaceholder == 'false'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% FloatingLabelBehavior %}.never'
              requiredIf: "hasFloatingPlaceholder == 'false'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
      - if: "hasFloatingPlaceholder != 'true' && hasFloatingPlaceholder != 'false'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% hasFloatingPlaceholder %} ? {% FloatingLabelBehavior %}.auto : {% FloatingLabelBehavior %}.never'
              requiredIf: "hasFloatingPlaceholder != 'true' && hasFloatingPlaceholder != 'false'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
    variables:
      hasFloatingPlaceholder:
        kind: 'fragment'
        value: 'arguments[hasFloatingPlaceholder]'

  # Changes made in https://github.com/flutter/flutter/pull/46115
  - title: "Migrate to 'floatingLabelBehavior'"
    date: 2020-01-15
    element:
      uris: [ 'material.dart' ]
      field: 'hasFloatingPlaceholder'
      inClass: 'InputDecoration'
    changes:
      - kind: 'rename'
        newName: 'floatingLabelBehavior'

  # Changes made in https://github.com/flutter/flutter/pull/46115
  - title: "Rename to 'floatingLabelBehavior'"
    date: 2020-01-15
    element:
      uris: [ 'material.dart' ]
      constructor: 'collapsed'
      inClass: 'InputDecoration'
    oneOf:
      - if: "hasFloatingPlaceholder == 'true'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% FloatingLabelBehavior %}.auto'
              requiredIf: "hasFloatingPlaceholder == 'true'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
      - if: "hasFloatingPlaceholder == 'false'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% FloatingLabelBehavior %}.never'
              requiredIf: "hasFloatingPlaceholder == 'false'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
      - if: "hasFloatingPlaceholder != 'true' && hasFloatingPlaceholder != 'false'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% hasFloatingPlaceholder %} ? {% FloatingLabelBehavior %}.auto : {% FloatingLabelBehavior %}.never'
              requiredIf: "hasFloatingPlaceholder != 'true' && hasFloatingPlaceholder != 'false'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
    variables:
      hasFloatingPlaceholder:
        kind: 'fragment'
        value: 'arguments[hasFloatingPlaceholder]'

  # Changes made in https://github.com/flutter/flutter/pull/46115
  - title: "Rename to 'floatingLabelBehavior'"
    date: 2020-01-15
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'InputDecoration'
    oneOf:
      - if: "hasFloatingPlaceholder == 'true'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% FloatingLabelBehavior %}.auto'
              requiredIf: "hasFloatingPlaceholder == 'true'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
      - if: "hasFloatingPlaceholder == 'false'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% FloatingLabelBehavior %}.never'
              requiredIf: "hasFloatingPlaceholder == 'false'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
      - if: "hasFloatingPlaceholder != 'true' && hasFloatingPlaceholder != 'false'"
        changes:
          - kind: 'addParameter'
            index: 14
            name: 'floatingLabelBehavior'
            style: optional_named
            argumentValue:
              expression: '{% hasFloatingPlaceholder %} ? {% FloatingLabelBehavior %}.auto : {% FloatingLabelBehavior %}.never'
              requiredIf: "hasFloatingPlaceholder != 'true' && hasFloatingPlaceholder != 'false'"
              variables:
                FloatingLabelBehavior:
                  kind: 'import'
                  uris: [ 'material.dart' ]
                  name: 'FloatingLabelBehavior'
          - kind: 'removeParameter'
            name: 'hasFloatingPlaceholder'
    variables:
      hasFloatingPlaceholder:
        kind: 'fragment'
        value: 'arguments[hasFloatingPlaceholder]'

  # Changes made in https://github.com/flutter/flutter/pull/59127
  - title: "Migrate to 'label'"
    date: 2020-07-09
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      field: 'title'
      inClass: 'BottomNavigationBarItem'
    changes:
      - kind: 'rename'
        newName: 'label'

  # Changes made in https://github.com/flutter/flutter/pull/59127
  - title: "Migrate to 'label'"
    date: 2020-07-09
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      constructor: ''
      inClass: 'BottomNavigationBarItem'
    changes:
      - kind: 'renameParameter'
        oldName: 'title'
        newName: 'label'

  # Changes made in https://github.com/flutter/flutter/pull/66043
  - title: "Use withKind"
    date: 2020-09-17
    element:
      uris: [ 'gestures.dart' ]
      constructor: ''
      inClass: 'VelocityTracker'
    oneOf:
      - if: "pointerDeviceKind == ''"
        changes:
          - kind: 'rename'
            newName: 'withKind'
          - kind: 'addParameter'
            index: 0
            name: 'kind'
            style: required_positional
            argumentValue:
              expression: 'PointerDeviceKind.touch'
      - if: "pointerDeviceKind != ''"
        changes:
          - kind: 'rename'
            newName: 'withKind'
    variables:
      pointerDeviceKind:
          kind: 'fragment'
          value: 'arguments[0]'

  # Changes made in https://github.com/flutter/flutter/pull/72043
  - title: "Migrate to 'maxLengthEnforcement'"
    date: 2020-12-13
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'TextFormField'
    oneOf:
      - if: "maxLengthEnforced == 'true'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'maxLengthEnforcement'
            style: optional_named
            argumentValue:
              expression: 'MaxLengthEnforcement.enforce'
              requiredIf: "maxLengthEnforced == 'true'"
          - kind: 'removeParameter'
            name: 'maxLengthEnforced'
      - if: "maxLengthEnforced == 'false'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'maxLengthEnforcement'
            style: optional_named
            argumentValue:
              expression: 'MaxLengthEnforcement.none'
              requiredIf: "maxLengthEnforced == 'false'"
          - kind: 'removeParameter'
            name: 'maxLengthEnforced'
    variables:
      maxLengthEnforced:
        kind: 'fragment'
        value: 'arguments[maxLengthEnforced]'

  # Changes made in https://github.com/flutter/flutter/pull/72043
  - title: "Migrate to 'maxLengthEnforcement'"
    date: 2020-12-13
    element:
      uris: [ 'material.dart' ]
      field: 'maxLengthEnforced'
      inClass: 'TextField'
    changes:
      - kind: 'rename'
        newName: 'maxLengthEnforcement'

  # Changes made in https://github.com/flutter/flutter/pull/72043
  - title: "Migrate to 'maxLengthEnforcement'"
    date: 2020-12-13
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'TextField'
    oneOf:
      - if: "maxLengthEnforced == 'true'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'maxLengthEnforcement'
            style: optional_named
            argumentValue:
              expression: 'MaxLengthEnforcement.enforce'
              requiredIf: "maxLengthEnforced == 'true'"
          - kind: 'removeParameter'
            name: 'maxLengthEnforced'
      - if: "maxLengthEnforced == 'false'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'maxLengthEnforcement'
            style: optional_named
            argumentValue:
              expression: 'MaxLengthEnforcement.none'
              requiredIf: "maxLengthEnforced == 'false'"
          - kind: 'removeParameter'
            name: 'maxLengthEnforced'
    variables:
      maxLengthEnforced:
        kind: 'fragment'
        value: 'arguments[maxLengthEnforced]'

  # Changes made in https://github.com/flutter/flutter/pull/72043
  - title: "Migrate to 'maxLengthEnforcement'"
    date: 2020-12-13
    element:
      uris: [ 'cupertino.dart' ]
      field: 'maxLengthEnforced'
      inClass: 'CupertinoTextField'
    changes:
      - kind: 'rename'
        newName: 'maxLengthEnforcement'

  # Changes made in https://github.com/flutter/flutter/pull/72043
  - title: "Migrate to 'maxLengthEnforcement'"
    date: 2020-12-13
    element:
      uris: [ 'cupertino.dart' ]
      constructor: 'borderless'
      inClass: 'CupertinoTextField'
    oneOf:
      - if: "maxLengthEnforced == 'true'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'maxLengthEnforcement'
            style: optional_named
            argumentValue:
              expression: 'MaxLengthEnforcement.enforce'
              requiredIf: "maxLengthEnforced == 'true'"
          - kind: 'removeParameter'
            name: 'maxLengthEnforced'
      - if: "maxLengthEnforced == 'false'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'maxLengthEnforcement'
            style: optional_named
            argumentValue:
              expression: 'MaxLengthEnforcement.none'
              requiredIf: "maxLengthEnforced == 'false'"
          - kind: 'removeParameter'
            name: 'maxLengthEnforced'
    variables:
      maxLengthEnforced:
        kind: 'fragment'
        value: 'arguments[maxLengthEnforced]'

  # Changes made in https://github.com/flutter/flutter/pull/72043
  - title: "Migrate to 'maxLengthEnforcement'"
    date: 2020-12-13
    element:
      uris: [ 'cupertino.dart' ]
      constructor: ''
      inClass: 'CupertinoTextField'
    oneOf:
      - if: "maxLengthEnforced == 'true'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'maxLengthEnforcement'
            style: optional_named
            argumentValue:
              expression: 'MaxLengthEnforcement.enforce'
              requiredIf: "maxLengthEnforced == 'true'"
          - kind: 'removeParameter'
            name: 'maxLengthEnforced'
      - if: "maxLengthEnforced == 'false'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'maxLengthEnforcement'
            style: optional_named
            argumentValue:
              expression: 'MaxLengthEnforcement.none'
              requiredIf: "maxLengthEnforced == 'false'"
          - kind: 'removeParameter'
            name: 'maxLengthEnforced'
    variables:
      maxLengthEnforced:
        kind: 'fragment'
        value: 'arguments[maxLengthEnforced]'

  # Changes made in https://github.com/flutter/flutter/pull/68905.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart' ]
      method: 'resolveFrom'
      inClass: 'MaterialBasedCupertinoThemeData'
    changes:
      - kind: 'removeParameter'
        name: 'nullOk'

  # Changes made in https://github.com/flutter/flutter/pull/68905.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'cupertino.dart' ]
      method: 'resolveFrom'
      inClass: 'CupertinoTextThemeData'
    changes:
      - kind: 'removeParameter'
        name: 'nullOk'

  # Changes made in https://github.com/flutter/flutter/pull/68905.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'cupertino.dart' ]
      method: 'resolveFrom'
      inClass: 'NoDefaultCupertinoThemeData'
    changes:
      - kind: 'removeParameter'
        name: 'nullOk'

  # Changes made in https://github.com/flutter/flutter/pull/68905.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'cupertino.dart' ]
      method: 'resolveFrom'
      inClass: 'CupertinoThemeData'
    changes:
      - kind: 'removeParameter'
        name: 'nullOk'

  # Changes made in https://github.com/flutter/flutter/pull/68736.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'cupertino.dart' ]
      method: 'brightnessOf'
      inClass: 'CupertinoTheme'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeBrightnessOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68905.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'cupertino.dart' ]
      method: 'of'
      inClass: 'CupertinoUserInterfaceLevel'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68905.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'cupertino.dart' ]
      method: 'resolveFrom'
      inClass: 'CupertinoDynamicColor'
    changes:
      - kind: 'removeParameter'
        name: 'nullOk'

  # Changes made in https://github.com/flutter/flutter/pull/68905.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'cupertino.dart' ]
      method: 'resolve'
      inClass: 'CupertinoDynamicColor'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeResolve'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68925.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'SliverAnimatedList'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68925.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'AnimatedList'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68921.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'invoke'
      inClass: 'Actions'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeInvoke'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68921.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'find'
      inClass: 'Actions'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeFind'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68921.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'handler'
      inClass: 'Actions'
    changes:
      - kind: 'removeParameter'
        name: 'nullOk'

  # Changes made in https://github.com/flutter/flutter/pull/68921.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'Shortcuts'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68917.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'Focus'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68917.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'FocusTraversalGroup'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68917.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'FocusTraversalOrder'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68911.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'localeOf'
      inClass: 'Localizations'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeLocaleOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68910.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'Router'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68908.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart' ]
      method: 'of'
      inClass: 'Scaffold'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68908.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart' ]
      method: 'of'
      inClass: 'ScaffoldMessenger'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/70726.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'Navigator'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/68736.
  - title: "Migrate from 'nullOk'"
    date: 2021-01-27
    element:
      uris: [ 'material.dart', 'widgets.dart', 'cupertino.dart' ]
      method: 'of'
      inClass: 'MediaQuery'
    oneOf:
      - if: "nullOk == 'true'"
        changes:
          - kind: 'rename'
            newName: 'maybeOf'
          - kind: 'removeParameter'
            name: 'nullOk'
      - if: "nullOk == 'false'"
        changes:
          - kind: 'removeParameter'
            name: 'nullOk'
    variables:
      nullOk:
        kind: 'fragment'
        value: 'arguments[nullOk]'

  # Changes made in https://github.com/flutter/flutter/pull/44189.
  - title: "Rename to 'dependOnInheritedElement'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'inheritFromElement'
      inClass: 'Element'
    changes:
      - kind: 'rename'
        newName: 'dependOnInheritedElement'

  # Changes made in https://github.com/flutter/flutter/pull/44189.
  - title: "Rename to 'dependOnInheritedWidgetOfExactType'"
    date: 2020-09-14
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'inheritFromWidgetOfExactType'
      inClass: 'Element'
    changes:
      - kind: 'rename'
        newName: 'dependOnInheritedWidgetOfExactType'
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: 'fragment'
              value: 'arguments[0]'
      - kind: 'removeParameter'
        index: 0

  # Changes made in https://github.com/flutter/flutter/pull/44189.
  - title: "Rename to 'getElementForInheritedWidgetOfExactType'"
    date: 2020-09-14
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'ancestorInheritedElementForWidgetOfExactType'
      inClass: 'Element'
    changes:
      - kind: 'rename'
        newName: 'getElementForInheritedWidgetOfExactType'
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: 'fragment'
              value: 'arguments[0]'
      - kind: 'removeParameter'
        index: 0

  # Changes made in https://github.com/flutter/flutter/pull/44189.
  - title: "Rename to 'getElementForInheritedWidgetOfExactType'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'ancestorWidgetOfExactType'
      inClass: 'Element'
    changes:
      - kind: 'rename'
        newName: 'findAncestorWidgetOfExactType'
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: 'fragment'
              value: 'arguments[0]'
      - kind: 'removeParameter'
        index: 0

  # Changes made in https://github.com/flutter/flutter/pull/44189.
  - title: "Rename to 'findAncestorStateOfType'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'ancestorStateOfType'
      inClass: 'Element'
    changes:
      - kind: 'rename'
        newName: 'findAncestorStateOfType'
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: 'fragment'
              value: 'arguments[0].typeArguments[0]'
      - kind: 'removeParameter'
        index: 0

  # Changes made in https://github.com/flutter/flutter/pull/44189.
  - title: "Rename to 'findAncestorRenderObjectOfType'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'ancestorRenderObjectOfType'
      inClass: 'Element'
    changes:
      - kind: 'rename'
        newName: 'findAncestorRenderObjectOfType'
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: 'fragment'
              value: 'arguments[0].typeArguments[0]'
      - kind: 'removeParameter'
        index: 0

  # Changes made in https://github.com/flutter/flutter/pull/44189.
  - title: "Rename to 'findAncestorRenderObjectOfType'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'rootAncestorStateOfType'
      inClass: 'Element'
    changes:
      - kind: 'rename'
        newName: 'findRootAncestorStateOfType'
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: 'fragment'
              value: 'arguments[0].typeArguments[0]'
      - kind: 'removeParameter'
        index: 0

  # Changes made in https://github.com/flutter/flutter/pull/26259
  - title: "Rename to 'resizeToAvoidBottomInset'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart' ]
      field: 'resizeToAvoidBottomPadding'
      inClass: 'Scaffold'
    changes:
      - kind: 'rename'
        newName: 'resizeToAvoidBottomInset'

  # Changes made in https://github.com/flutter/flutter/pull/26259
  - title: "Rename to 'resizeToAvoidBottomInset'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'Scaffold'
    changes:
      - kind: 'renameParameter'
        oldName: 'resizeToAvoidBottomPadding'
        newName: 'resizeToAvoidBottomInset'

  # Change made in https://github.com/flutter/flutter/pull/20649
  # TODO(Piinks): Add tests when `bulkApply:false` testing is supported, https://github.com/dart-lang/sdk/issues/44639
  - title: "Replace with 'CupertinoPopupSurface'"
    date: 2021-01-07
    bulkApply: false
    element:
      uris: [ 'cupertino.dart' ]
      class: 'CupertinoDialog'
    changes:
      - kind: 'rename'
        newName: 'CupertinoPopupSurface'

  # Change made in https://github.com/flutter/flutter/pull/20649
  # TODO(Piinks): Add tests when `bulkApply:false` testing is supported, https://github.com/dart-lang/sdk/issues/44639
  - title: "Replace with 'CupertinoAlertDialog'"
    date: 2021-01-07
    bulkApply: false
    element:
      uris: [ 'cupertino.dart' ]
      class: 'CupertinoDialog'
    changes:
      - kind: 'rename'
        newName: 'CupertinoAlertDialog'
      - kind: 'renameParameter'
        oldName: 'child'
        newName: 'content'

  # Changes made in https://github.com/flutter/flutter/pull/61648
  - title: "Migrate to 'autovalidateMode'"
    date: 2020-09-02
    element:
      uris: [ 'widgets.dart', 'material.dart', 'cupertino.dart' ]
      field: 'autovalidate'
      inClass: 'Form'
    changes:
      - kind: 'rename'
        newName: 'autovalidateMode'

  # Changes made in https://github.com/flutter/flutter/pull/61648
  - title: "Migrate to 'autovalidateMode'"
    date: 2020-09-02
    element:
      uris: [ 'widgets.dart', 'material.dart', 'cupertino.dart' ]
      constructor: ''
      inClass: 'Form'
    oneOf:
      - if: "autovalidate == 'true'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'autovalidateMode'
            style: optional_named
            argumentValue:
              expression: 'AutovalidateMode.always'
              requiredIf: "autovalidate == 'true'"
          - kind: 'removeParameter'
            name: 'autovalidate'
      - if: "autovalidate == 'false'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'autovalidateMode'
            style: optional_named
            argumentValue:
              expression: 'AutovalidateMode.disabled'
              requiredIf: "autovalidate == 'false'"
          - kind: 'removeParameter'
            name: 'autovalidate'
    variables:
      autovalidate:
        kind: 'fragment'
        value: 'arguments[autovalidate]'

  # Changes made in https://github.com/flutter/flutter/pull/61648
  - title: "Migrate to 'autovalidateMode'"
    date: 2020-09-02
    element:
      uris: [ 'widgets.dart', 'material.dart', 'cupertino.dart' ]
      field: 'autovalidate'
      inClass: 'FormField'
    changes:
      - kind: 'rename'
        newName: 'autovalidateMode'

  # Changes made in https://github.com/flutter/flutter/pull/61648
  - title: "Migrate to 'autovalidateMode'"
    date: 2020-09-02
    element:
      uris: [ 'widgets.dart', 'material.dart', 'cupertino.dart' ]
      constructor: ''
      inClass: 'FormField'
    oneOf:
      - if: "autovalidate == 'true'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'autovalidateMode'
            style: optional_named
            argumentValue:
              expression: 'AutovalidateMode.always'
              requiredIf: "autovalidate == 'true'"
          - kind: 'removeParameter'
            name: 'autovalidate'
      - if: "autovalidate == 'false'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'autovalidateMode'
            style: optional_named
            argumentValue:
              expression: 'AutovalidateMode.disabled'
              requiredIf: "autovalidate == 'false'"
          - kind: 'removeParameter'
            name: 'autovalidate'
    variables:
      autovalidate:
        kind: 'fragment'
        value: 'arguments[autovalidate]'

  # Changes made in https://github.com/flutter/flutter/pull/61648
  - title: "Migrate to 'autovalidateMode'"
    date: 2020-09-02
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'TextFormField'
    oneOf:
      - if: "autovalidate == 'true'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'autovalidateMode'
            style: optional_named
            argumentValue:
              expression: 'AutovalidateMode.always'
              requiredIf: "autovalidate == 'true'"
          - kind: 'removeParameter'
            name: 'autovalidate'
      - if: "autovalidate == 'false'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'autovalidateMode'
            style: optional_named
            argumentValue:
              expression: 'AutovalidateMode.disabled'
              requiredIf: "autovalidate == 'false'"
          - kind: 'removeParameter'
            name: 'autovalidate'
    variables:
      autovalidate:
        kind: 'fragment'
        value: 'arguments[autovalidate]'

  # Changes made in https://github.com/flutter/flutter/pull/61648
  - title: "Migrate to 'autovalidateMode'"
    date: 2020-09-02
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'DropdownButtonFormField'
    oneOf:
      - if: "autovalidate == 'true'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'autovalidateMode'
            style: optional_named
            argumentValue:
              expression: 'AutovalidateMode.always'
              requiredIf: "autovalidate == 'true'"
          - kind: 'removeParameter'
            name: 'autovalidate'
      - if: "autovalidate == 'false'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'autovalidateMode'
            style: optional_named
            argumentValue:
              expression: 'AutovalidateMode.disabled'
              requiredIf: "autovalidate == 'false'"
          - kind: 'removeParameter'
            name: 'autovalidate'
    variables:
      autovalidate:
        kind: 'fragment'
        value: 'arguments[autovalidate]'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'headline1'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: display4
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'headline1'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'headline2'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: display3
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'headline2'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'headline3'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: display2
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'headline3'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'headline4'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: display1
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'headline4'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'headline5'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: headline
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'headline5'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'headline6'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: title
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'headline6'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'subtitle1'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: subhead
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'subtitle1'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'bodyText1'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: body2
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'bodyText1'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'bodyText2'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: body1
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'bodyText2'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: "Rename to 'subtitle2'"
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      getter: subtitle
      inClass: 'TextTheme'
    changes:
      - kind: 'rename'
        newName: 'subtitle2'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: 'Rename arguments'
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      constructor: ''
      inClass: 'TextTheme'
    changes:
      - kind: 'renameParameter'
        oldName: 'display4'
        newName: 'headline1'
      - kind: 'renameParameter'
        oldName: 'display3'
        newName: 'headline2'
      - kind: 'renameParameter'
        oldName: 'display2'
        newName: 'headline3'
      - kind: 'renameParameter'
        oldName: 'display1'
        newName: 'headline4'
      - kind: 'renameParameter'
        oldName: 'headline'
        newName: 'headline5'
      - kind: 'renameParameter'
        oldName: 'title'
        newName: 'headline6'
      - kind: 'renameParameter'
        oldName: 'subhead'
        newName: 'subtitle1'
      - kind: 'renameParameter'
        oldName: 'subtitle'
        newName: 'subtitle2'
      - kind: 'renameParameter'
        oldName: 'body2'
        newName: 'bodyText1'
      - kind: 'renameParameter'
        oldName: 'body1'
        newName: 'bodyText2'

  # Changes made in https://github.com/flutter/flutter/pull/48547
  - title: 'Rename arguments'
    date: 2020-01-24
    element:
      uris: [ 'material.dart' ]
      method: 'copyWith'
      inClass: 'TextTheme'
    changes:
      - kind: 'renameParameter'
        oldName: 'display4'
        newName: 'headline1'
      - kind: 'renameParameter'
        oldName: 'display3'
        newName: 'headline2'
      - kind: 'renameParameter'
        oldName: 'display2'
        newName: 'headline3'
      - kind: 'renameParameter'
        oldName: 'display1'
        newName: 'headline4'
      - kind: 'renameParameter'
        oldName: 'headline'
        newName: 'headline5'
      - kind: 'renameParameter'
        oldName: 'title'
        newName: 'headline6'
      - kind: 'renameParameter'
        oldName: 'subhead'
        newName: 'subtitle1'
      - kind: 'renameParameter'
        oldName: 'subtitle'
        newName: 'subtitle2'
      - kind: 'renameParameter'
        oldName: 'body2'
        newName: 'bodyText1'
      - kind: 'renameParameter'
        oldName: 'body1'
        newName: 'bodyText2'

  # Changes made in https://github.com/flutter/flutter/pull/66305
  - title: "Migrate to 'clipBehavior'"
    date: 2020-09-22
    element:
      uris: [ 'widgets.dart', 'material.dart', 'cupertino.dart' ]
      field: 'overflow'
      inClass: 'Stack'
    changes:
      - kind: 'rename'
        newName: 'clipBehavior'

  # Changes made in https://github.com/flutter/flutter/pull/66305
  - title: "Migrate to 'clipBehavior'"
    date: 2020-09-22
    element:
      uris: [ 'widgets.dart', 'material.dart', 'cupertino.dart' ]
      constructor: ''
      inClass: 'Stack'
    oneOf:
      - if: "overflow == 'Overflow.clip'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'clipBehavior'
            style: optional_named
            argumentValue:
              expression: 'Clip.hardEdge'
              requiredIf: "overflow == 'Overflow.clip'"
          - kind: 'removeParameter'
            name: 'overflow'
      - if: "overflow == 'Overflow.visible'"
        changes:
          - kind: 'addParameter'
            index: 0
            name: 'clipBehavior'
            style: optional_named
            argumentValue:
              expression: 'Clip.none'
              requiredIf: "overflow == 'Overflow.visible'"
          - kind: 'removeParameter'
            name: 'overflow'
    variables:
      overflow:
        kind: 'fragment'
        value: 'arguments[overflow]'

  # Change made in https://github.com/flutter/flutter/pull/44189.
  - title: "Rename to 'dependOnInheritedElement'"
    date: 2019-11-22
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      inClass: 'BuildContext'
      method: 'inheritFromElement'
    changes:
      - kind: 'rename'
        newName: 'dependOnInheritedElement'

  # Change made in https://github.com/flutter/flutter/pull/44189.
  - title: "Migrate to 'dependOnInheritedWidgetOfExactType'"
    date: 2019-11-22
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      inClass: 'BuildContext'
      method: 'inheritFromWidgetOfExactType'
    changes:
      - kind: 'rename'
        newName: 'dependOnInheritedWidgetOfExactType'
      - kind: 'removeParameter'
        index: 0
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: fragment
              value: 'arguments[0]'

  # Change made in https://github.com/flutter/flutter/pull/44189.
  - title: "Migrate to 'getElementForInheritedWidgetOfExactType'"
    date: 2019-11-22
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      inClass: 'BuildContext'
      method: 'ancestorInheritedElementForWidgetOfExactType'
    changes:
      - kind: 'rename'
        newName: 'getElementForInheritedWidgetOfExactType'
      - kind: 'removeParameter'
        index: 0
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: fragment
              value: 'arguments[0]'

  # Change made in https://github.com/flutter/flutter/pull/44189.
  - title: "Migrate to 'findAncestorWidgetOfExactType'"
    date: 2019-11-22
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      inClass: 'BuildContext'
      method: 'ancestorWidgetOfExactType'
    changes:
      - kind: 'rename'
        newName: 'findAncestorWidgetOfExactType'
      - kind: 'removeParameter'
        index: 0
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: fragment
              value: 'arguments[0]'

  # Change made in https://github.com/flutter/flutter/pull/44189.
  - title: "Migrate to 'findAncestorStateOfType'"
    date: 2019-11-22
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      inClass: 'BuildContext'
      method: 'ancestorStateOfType'
    changes:
      - kind: 'rename'
        newName: 'findAncestorStateOfType'
      - kind: 'removeParameter'
        index: 0
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: fragment
              value: 'arguments[0].typeArguments[0]'

  # Change made in https://github.com/flutter/flutter/pull/44189.
  - title: "Migrate to 'rootAncestorStateOfType'"
    date: 2019-11-22
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      inClass: 'BuildContext'
      method: 'rootAncestorStateOfType'
    changes:
      - kind: 'rename'
        newName: 'findRootAncestorStateOfType'
      - kind: 'removeParameter'
        index: 0
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: fragment
              value: 'arguments[0].typeArguments[0]'

  # Change made in https://github.com/flutter/flutter/pull/44189.
  - title: "Migrate to 'ancestorRenderObjectOfType'"
    date: 2019-11-22
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      inClass: 'BuildContext'
      method: 'ancestorRenderObjectOfType'
    changes:
      - kind: 'rename'
        newName: 'findAncestorRenderObjectOfType'
      - kind: 'removeParameter'
        index: 0
      - kind: 'addTypeParameter'
        index: 0
        name: 'T'
        argumentValue:
          expression: '{% type %}'
          variables:
            type:
              kind: fragment
              value: 'arguments[0].typeArguments[0]'

  # Changes made in https://github.com/flutter/flutter/pull/45941
  - title: "Rename to 'deferFirstFrame'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'deferFirstFrameReport'
      inClass: 'WidgetsBinding'
    changes:
      - kind: 'rename'
        newName: 'deferFirstFrame'

  # Changes made in https://github.com/flutter/flutter/pull/45941
  - title: "Rename to 'allowFirstFrame'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'allowFirstFrameReport'
      inClass: 'WidgetsBinding'
    changes:
      - kind: 'rename'
        newName: 'allowFirstFrame'

  # Changes made in https://github.com/flutter/flutter/pull/44189
  - title: "Rename to 'dependOnInheritedElement'"
    date: 2020-12-23
    element:
      uris: [ 'material.dart', 'cupertino.dart', 'widgets.dart' ]
      method: 'inheritFromElement'
      inClass: 'StatefulElement'
    changes:
      - kind: 'rename'
        newName: 'dependOnInheritedElement'

  # Changes made in https://github.com/flutter/flutter/pull/15303
  - title: "Replace 'child' with 'builder'"
    date: 2020-12-17
    element:
      uris: [ 'material.dart' ]
      function: 'showDialog'
    changes:
      - kind: 'addParameter'
        index: 0
        name: 'builder'
        style: optional_named
        argumentValue:
          expression: '(context) => {% widget %}'
          requiredIf: "widget != ''"
          variables:
            widget:
              kind: fragment
              value: 'arguments[child]'
      - kind: 'removeParameter'
        name: 'child'

  # Changes made in https://github.com/flutter/flutter/pull/28602
  - title: "Rename to 'fromMouseEvent'"
    date: 2020-12-15
    element:
      uris: [ 'gestures.dart' ]
      constructor: 'fromHoverEvent'
      inClass: 'PointerEnterEvent'
    changes:
      - kind: 'rename'
        newName: 'fromMouseEvent'

  # Changes made in https://github.com/flutter/flutter/pull/28602
  - title: "Rename to 'fromMouseEvent'"
    date: 2020-12-15
    element:
      uris: [ 'gestures.dart' ]
      constructor: 'fromHoverEvent'
      inClass: 'PointerExitEvent'
    changes:
      - kind: 'rename'
        newName: 'fromMouseEvent'

  # Changes made in https://github.com/flutter/flutter/pull/41859
  - title: "Remove 'brightness'"
    date: 2020-12-10
    element:
      uris: [ 'cupertino.dart' ]
      constructor: ''
      inClass: 'CupertinoTextThemeData'
    changes:
      - kind: 'removeParameter'
        name: 'brightness'

  # Changes made in https://github.com/flutter/flutter/pull/41859
  - title: "Remove 'brightness'"
    date: 2020-12-10
    element:
      uris: [ 'cupertino.dart' ]
      method: 'copyWith'
      inClass: 'CupertinoTextThemeData'
    changes:
      - kind: 'removeParameter'
        name: 'brightness'

# Before adding a new fix: read instructions at the top of this file.
