// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/*member: _#topLevelNonNullableWithoutInitializer:
 lateField,
 lateFieldName=topLevelNonNullableWithoutInitializer,
 lateFieldTarget=_#topLevelNonNullableWithoutInitializer
*/
/*member: topLevelNonNullableWithoutInitializer:
 lateFieldGetter,
 lateFieldName=topLevelNonNullableWithoutInitializer,
 lateFieldTarget=_#topLevelNonNullableWithoutInitializer
*/
/*member: topLevelNonNullableWithoutInitializer=:
 lateFieldName=topLevelNonNullableWithoutInitializer,
 lateFieldSetter,
 lateFieldTarget=_#topLevelNonNullableWithoutInitializer
*/
late int topLevelNonNullableWithoutInitializer;
/*member: _#finalTopLevelNonNullableWithoutInitializer:
 lateField,
 lateFieldName=finalTopLevelNonNullableWithoutInitializer,
 lateFieldTarget=_#finalTopLevelNonNullableWithoutInitializer
*/
/*member: finalTopLevelNonNullableWithoutInitializer:
 lateFieldGetter,
 lateFieldName=finalTopLevelNonNullableWithoutInitializer,
 lateFieldTarget=_#finalTopLevelNonNullableWithoutInitializer
*/
/*member: finalTopLevelNonNullableWithoutInitializer=:
 lateFieldName=finalTopLevelNonNullableWithoutInitializer,
 lateFieldSetter,
 lateFieldTarget=_#finalTopLevelNonNullableWithoutInitializer
*/
late final int finalTopLevelNonNullableWithoutInitializer;
/*member: _#topLevelNullableWithoutInitializer:
 lateField,
 lateFieldName=topLevelNullableWithoutInitializer,
 lateFieldTarget=_#topLevelNullableWithoutInitializer
*/
/*is-null.member: _#topLevelNullableWithoutInitializer#isSet:
 lateFieldName=topLevelNullableWithoutInitializer,
 lateFieldTarget=_#topLevelNullableWithoutInitializer,
 lateIsSetField
*/
/*member: topLevelNullableWithoutInitializer:
 lateFieldGetter,
 lateFieldName=topLevelNullableWithoutInitializer,
 lateFieldTarget=_#topLevelNullableWithoutInitializer
*/
/*member: topLevelNullableWithoutInitializer=:
 lateFieldName=topLevelNullableWithoutInitializer,
 lateFieldSetter,
 lateFieldTarget=_#topLevelNullableWithoutInitializer
*/
late int? topLevelNullableWithoutInitializer;
/*member: _#finalTopLevelNullableWithoutInitializer:
 lateField,
 lateFieldName=finalTopLevelNullableWithoutInitializer,
 lateFieldTarget=_#finalTopLevelNullableWithoutInitializer
*/
/*is-null.member: _#finalTopLevelNullableWithoutInitializer#isSet:
 lateFieldName=finalTopLevelNullableWithoutInitializer,
 lateFieldTarget=_#finalTopLevelNullableWithoutInitializer,
 lateIsSetField
*/
/*member: finalTopLevelNullableWithoutInitializer:
 lateFieldGetter,
 lateFieldName=finalTopLevelNullableWithoutInitializer,
 lateFieldTarget=_#finalTopLevelNullableWithoutInitializer
*/
/*member: finalTopLevelNullableWithoutInitializer=:
 lateFieldName=finalTopLevelNullableWithoutInitializer,
 lateFieldSetter,
 lateFieldTarget=_#finalTopLevelNullableWithoutInitializer
*/
late final int? finalTopLevelNullableWithoutInitializer;
/*member: _#topLevelNonNullableWithInitializer:
 lateField,
 lateFieldInitializer=1,
 lateFieldName=topLevelNonNullableWithInitializer,
 lateFieldTarget=_#topLevelNonNullableWithInitializer
*/
/*member: topLevelNonNullableWithInitializer:
 lateFieldGetter,
 lateFieldInitializer=1,
 lateFieldName=topLevelNonNullableWithInitializer,
 lateFieldTarget=_#topLevelNonNullableWithInitializer
*/
/*member: topLevelNonNullableWithInitializer=:
 lateFieldInitializer=1,
 lateFieldName=topLevelNonNullableWithInitializer,
 lateFieldSetter,
 lateFieldTarget=_#topLevelNonNullableWithInitializer
*/
late int topLevelNonNullableWithInitializer = 1;
/*member: _#finalTopLevelNonNullableWithInitializer:
 lateField,
 lateFieldInitializer=2,
 lateFieldName=finalTopLevelNonNullableWithInitializer,
 lateFieldTarget=_#finalTopLevelNonNullableWithInitializer
*/
/*member: finalTopLevelNonNullableWithInitializer:
 lateFieldGetter,
 lateFieldInitializer=2,
 lateFieldName=finalTopLevelNonNullableWithInitializer,
 lateFieldTarget=_#finalTopLevelNonNullableWithInitializer
*/
late final int finalTopLevelNonNullableWithInitializer = 2;
/*member: _#topLevelNullableWithInitializer:
 lateField,
 lateFieldInitializer=3,
 lateFieldName=topLevelNullableWithInitializer,
 lateFieldTarget=_#topLevelNullableWithInitializer
*/
/*is-null.member: _#topLevelNullableWithInitializer#isSet:
 lateFieldInitializer=3,
 lateFieldName=topLevelNullableWithInitializer,
 lateFieldTarget=_#topLevelNullableWithInitializer,
 lateIsSetField
*/
/*member: topLevelNullableWithInitializer:
 lateFieldGetter,
 lateFieldInitializer=3,
 lateFieldName=topLevelNullableWithInitializer,
 lateFieldTarget=_#topLevelNullableWithInitializer
*/
/*member: topLevelNullableWithInitializer=:
 lateFieldInitializer=3,
 lateFieldName=topLevelNullableWithInitializer,
 lateFieldSetter,
 lateFieldTarget=_#topLevelNullableWithInitializer
*/
late int? topLevelNullableWithInitializer = 3;
/*member: _#finalTopLevelNullableWithInitializer:
 lateField,
 lateFieldInitializer=4,
 lateFieldName=finalTopLevelNullableWithInitializer,
 lateFieldTarget=_#finalTopLevelNullableWithInitializer
*/
/*is-null.member: _#finalTopLevelNullableWithInitializer#isSet:
 lateFieldInitializer=4,
 lateFieldName=finalTopLevelNullableWithInitializer,
 lateFieldTarget=_#finalTopLevelNullableWithInitializer,
 lateIsSetField
*/
/*member: finalTopLevelNullableWithInitializer:
 lateFieldGetter,
 lateFieldInitializer=4,
 lateFieldName=finalTopLevelNullableWithInitializer,
 lateFieldTarget=_#finalTopLevelNullableWithInitializer
*/
late final int? finalTopLevelNullableWithInitializer = 4;

/*member: Class._#new#tearOff:
 tearoffConstructor,
 tearoffLowering
*/
class Class {
  /*member: Class._#Class#instanceNonNullableWithoutInitializer:
   lateField,
   lateFieldName=instanceNonNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#instanceNonNullableWithoutInitializer
  */
  /*member: Class.instanceNonNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=instanceNonNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#instanceNonNullableWithoutInitializer
  */
  /*member: Class.instanceNonNullableWithoutInitializer=:
   lateFieldName=instanceNonNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#instanceNonNullableWithoutInitializer
  */
  late int instanceNonNullableWithoutInitializer;
  /*member: Class._#Class#finalInstanceNonNullableWithoutInitializer:
   lateField,
   lateFieldName=finalInstanceNonNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNonNullableWithoutInitializer
  */
  /*member: Class.finalInstanceNonNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=finalInstanceNonNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNonNullableWithoutInitializer
  */
  /*member: Class.finalInstanceNonNullableWithoutInitializer=:
   lateFieldName=finalInstanceNonNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#finalInstanceNonNullableWithoutInitializer
  */
  late final int finalInstanceNonNullableWithoutInitializer;
  /*member: Class._#Class#instanceNullableWithoutInitializer:
   lateField,
   lateFieldName=instanceNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#instanceNullableWithoutInitializer
  */
  /*is-null.member: Class._#Class#instanceNullableWithoutInitializer#isSet:
   lateFieldName=instanceNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#instanceNullableWithoutInitializer,
   lateIsSetField
  */
  /*member: Class.instanceNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=instanceNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#instanceNullableWithoutInitializer
  */
  /*member: Class.instanceNullableWithoutInitializer=:
   lateFieldName=instanceNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#instanceNullableWithoutInitializer
  */
  late int? instanceNullableWithoutInitializer;
  /*member: Class._#Class#finalInstanceNullableWithoutInitializer:
   lateField,
   lateFieldName=finalInstanceNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNullableWithoutInitializer
  */
  /*is-null.member: Class._#Class#finalInstanceNullableWithoutInitializer#isSet:
   lateFieldName=finalInstanceNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNullableWithoutInitializer,
   lateIsSetField
  */
  /*member: Class.finalInstanceNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=finalInstanceNullableWithoutInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNullableWithoutInitializer
  */
  /*member: Class.finalInstanceNullableWithoutInitializer=:
   lateFieldName=finalInstanceNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#finalInstanceNullableWithoutInitializer
  */
  late final int? finalInstanceNullableWithoutInitializer;
  /*member: Class._#Class#instanceNonNullableWithInitializer:
   lateField,
   lateFieldInitializer=5,
   lateFieldName=instanceNonNullableWithInitializer,
   lateFieldTarget=Class._#Class#instanceNonNullableWithInitializer
  */
  /*member: Class.instanceNonNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=5,
   lateFieldName=instanceNonNullableWithInitializer,
   lateFieldTarget=Class._#Class#instanceNonNullableWithInitializer
  */
  /*member: Class.instanceNonNullableWithInitializer=:
   lateFieldInitializer=5,
   lateFieldName=instanceNonNullableWithInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#instanceNonNullableWithInitializer
  */
  late int instanceNonNullableWithInitializer = 5;
  /*member: Class._#Class#finalInstanceNonNullableWithInitializer:
   lateField,
   lateFieldInitializer=6,
   lateFieldName=finalInstanceNonNullableWithInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNonNullableWithInitializer
  */
  /*member: Class.finalInstanceNonNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=6,
   lateFieldName=finalInstanceNonNullableWithInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNonNullableWithInitializer
  */
  late final int finalInstanceNonNullableWithInitializer = 6;
  /*member: Class._#Class#instanceNullableWithInitializer:
   lateField,
   lateFieldInitializer=7,
   lateFieldName=instanceNullableWithInitializer,
   lateFieldTarget=Class._#Class#instanceNullableWithInitializer
  */
  /*is-null.member: Class._#Class#instanceNullableWithInitializer#isSet:
   lateFieldInitializer=7,
   lateFieldName=instanceNullableWithInitializer,
   lateFieldTarget=Class._#Class#instanceNullableWithInitializer,
   lateIsSetField
  */
  /*member: Class.instanceNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=7,
   lateFieldName=instanceNullableWithInitializer,
   lateFieldTarget=Class._#Class#instanceNullableWithInitializer
  */
  /*member: Class.instanceNullableWithInitializer=:
   lateFieldInitializer=7,
   lateFieldName=instanceNullableWithInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#instanceNullableWithInitializer
  */
  late int? instanceNullableWithInitializer = 7;
  /*member: Class._#Class#finalInstanceNullableWithInitializer:
   lateField,
   lateFieldInitializer=8,
   lateFieldName=finalInstanceNullableWithInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNullableWithInitializer
  */
  /*is-null.member: Class._#Class#finalInstanceNullableWithInitializer#isSet:
   lateFieldInitializer=8,
   lateFieldName=finalInstanceNullableWithInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNullableWithInitializer,
   lateIsSetField
  */
  /*member: Class.finalInstanceNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=8,
   lateFieldName=finalInstanceNullableWithInitializer,
   lateFieldTarget=Class._#Class#finalInstanceNullableWithInitializer
  */
  late final int? finalInstanceNullableWithInitializer = 8;

  /*member: Class._#staticNonNullableWithoutInitializer:
   lateField,
   lateFieldName=staticNonNullableWithoutInitializer,
   lateFieldTarget=Class._#staticNonNullableWithoutInitializer
  */
  /*member: Class.staticNonNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=staticNonNullableWithoutInitializer,
   lateFieldTarget=Class._#staticNonNullableWithoutInitializer
  */
  /*member: Class.staticNonNullableWithoutInitializer=:
   lateFieldName=staticNonNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#staticNonNullableWithoutInitializer
  */
  static late int staticNonNullableWithoutInitializer;
  /*member: Class._#finalStaticNonNullableWithoutInitializer:
   lateField,
   lateFieldName=finalStaticNonNullableWithoutInitializer,
   lateFieldTarget=Class._#finalStaticNonNullableWithoutInitializer
  */
  /*member: Class.finalStaticNonNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=finalStaticNonNullableWithoutInitializer,
   lateFieldTarget=Class._#finalStaticNonNullableWithoutInitializer
  */
  /*member: Class.finalStaticNonNullableWithoutInitializer=:
   lateFieldName=finalStaticNonNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#finalStaticNonNullableWithoutInitializer
  */
  static late final int finalStaticNonNullableWithoutInitializer;
  /*member: Class._#staticNullableWithoutInitializer:
   lateField,
   lateFieldName=staticNullableWithoutInitializer,
   lateFieldTarget=Class._#staticNullableWithoutInitializer
  */
  /*is-null.member: Class._#staticNullableWithoutInitializer#isSet:
   lateFieldName=staticNullableWithoutInitializer,
   lateFieldTarget=Class._#staticNullableWithoutInitializer,
   lateIsSetField
  */
  /*member: Class.staticNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=staticNullableWithoutInitializer,
   lateFieldTarget=Class._#staticNullableWithoutInitializer
  */
  /*member: Class.staticNullableWithoutInitializer=:
   lateFieldName=staticNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#staticNullableWithoutInitializer
  */
  static late int? staticNullableWithoutInitializer;
  /*member: Class._#finalStaticNullableWithoutInitializer:
   lateField,
   lateFieldName=finalStaticNullableWithoutInitializer,
   lateFieldTarget=Class._#finalStaticNullableWithoutInitializer
  */
  /*is-null.member: Class._#finalStaticNullableWithoutInitializer#isSet:
   lateFieldName=finalStaticNullableWithoutInitializer,
   lateFieldTarget=Class._#finalStaticNullableWithoutInitializer,
   lateIsSetField
  */
  /*member: Class.finalStaticNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=finalStaticNullableWithoutInitializer,
   lateFieldTarget=Class._#finalStaticNullableWithoutInitializer
  */
  /*member: Class.finalStaticNullableWithoutInitializer=:
   lateFieldName=finalStaticNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#finalStaticNullableWithoutInitializer
  */
  static late final int? finalStaticNullableWithoutInitializer;
  /*member: Class._#staticNonNullableWithInitializer:
   lateField,
   lateFieldInitializer=9,
   lateFieldName=staticNonNullableWithInitializer,
   lateFieldTarget=Class._#staticNonNullableWithInitializer
  */
  /*member: Class.staticNonNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=9,
   lateFieldName=staticNonNullableWithInitializer,
   lateFieldTarget=Class._#staticNonNullableWithInitializer
  */
  /*member: Class.staticNonNullableWithInitializer=:
   lateFieldInitializer=9,
   lateFieldName=staticNonNullableWithInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#staticNonNullableWithInitializer
  */
  static late int staticNonNullableWithInitializer = 9;
  /*member: Class._#finalStaticNonNullableWithInitializer:
   lateField,
   lateFieldInitializer=10,
   lateFieldName=finalStaticNonNullableWithInitializer,
   lateFieldTarget=Class._#finalStaticNonNullableWithInitializer
  */
  /*member: Class.finalStaticNonNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=10,
   lateFieldName=finalStaticNonNullableWithInitializer,
   lateFieldTarget=Class._#finalStaticNonNullableWithInitializer
  */
  static late final int finalStaticNonNullableWithInitializer = 10;
  /*member: Class._#staticNullableWithInitializer:
   lateField,
   lateFieldInitializer=11,
   lateFieldName=staticNullableWithInitializer,
   lateFieldTarget=Class._#staticNullableWithInitializer
  */
  /*is-null.member: Class._#staticNullableWithInitializer#isSet:
   lateFieldInitializer=11,
   lateFieldName=staticNullableWithInitializer,
   lateFieldTarget=Class._#staticNullableWithInitializer,
   lateIsSetField
  */
  /*member: Class.staticNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=11,
   lateFieldName=staticNullableWithInitializer,
   lateFieldTarget=Class._#staticNullableWithInitializer
  */
  /*member: Class.staticNullableWithInitializer=:
   lateFieldInitializer=11,
   lateFieldName=staticNullableWithInitializer,
   lateFieldSetter,
   lateFieldTarget=Class._#staticNullableWithInitializer
  */
  static late int? staticNullableWithInitializer = 11;
  /*member: Class._#finalStaticNullableWithInitializer:
   lateField,
   lateFieldInitializer=12,
   lateFieldName=finalStaticNullableWithInitializer,
   lateFieldTarget=Class._#finalStaticNullableWithInitializer
  */
  /*is-null.member: Class._#finalStaticNullableWithInitializer#isSet:
   lateFieldInitializer=12,
   lateFieldName=finalStaticNullableWithInitializer,
   lateFieldTarget=Class._#finalStaticNullableWithInitializer,
   lateIsSetField
  */
  /*member: Class.finalStaticNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=12,
   lateFieldName=finalStaticNullableWithInitializer,
   lateFieldTarget=Class._#finalStaticNullableWithInitializer
  */
  static late final int? finalStaticNullableWithInitializer = 12;
}

extension on int? {
  /*member: _#_extension#0|unnamedExtensionNonNullableWithoutInitializer:
   lateField,
   lateFieldName=_extension#0|unnamedExtensionNonNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNonNullableWithoutInitializer
  */
  /*member: _extension#0|unnamedExtensionNonNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=_extension#0|unnamedExtensionNonNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNonNullableWithoutInitializer
  */
  /*member: _extension#0|unnamedExtensionNonNullableWithoutInitializer=:
   lateFieldName=_extension#0|unnamedExtensionNonNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|unnamedExtensionNonNullableWithoutInitializer
  */
  static late int unnamedExtensionNonNullableWithoutInitializer;
  /*member: _#_extension#0|finalUnnamedExtensionNonNullableWithoutInitializer:
   lateField,
   lateFieldName=_extension#0|finalUnnamedExtensionNonNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNonNullableWithoutInitializer
  */
  /*member: _extension#0|finalUnnamedExtensionNonNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=_extension#0|finalUnnamedExtensionNonNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNonNullableWithoutInitializer
  */
  /*member: _extension#0|finalUnnamedExtensionNonNullableWithoutInitializer=:
   lateFieldName=_extension#0|finalUnnamedExtensionNonNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNonNullableWithoutInitializer
  */
  static late final int finalUnnamedExtensionNonNullableWithoutInitializer;
  /*member: _#_extension#0|unnamedExtensionNullableWithoutInitializer:
   lateField,
   lateFieldName=_extension#0|unnamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNullableWithoutInitializer
  */
  /*is-null.member: _#_extension#0|unnamedExtensionNullableWithoutInitializer#isSet:
   lateFieldName=_extension#0|unnamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNullableWithoutInitializer,
   lateIsSetField
  */
  /*member: _extension#0|unnamedExtensionNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=_extension#0|unnamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNullableWithoutInitializer
  */
  /*member: _extension#0|unnamedExtensionNullableWithoutInitializer=:
   lateFieldName=_extension#0|unnamedExtensionNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|unnamedExtensionNullableWithoutInitializer
  */
  static late int? unnamedExtensionNullableWithoutInitializer;
  /*member: _#_extension#0|finalUnnamedExtensionNullableWithoutInitializer:
   lateField,
   lateFieldName=_extension#0|finalUnnamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNullableWithoutInitializer
  */
  /*is-null.member: _#_extension#0|finalUnnamedExtensionNullableWithoutInitializer#isSet:
   lateFieldName=_extension#0|finalUnnamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNullableWithoutInitializer,
   lateIsSetField
  */
  /*member: _extension#0|finalUnnamedExtensionNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=_extension#0|finalUnnamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNullableWithoutInitializer
  */
  /*member: _extension#0|finalUnnamedExtensionNullableWithoutInitializer=:
   lateFieldName=_extension#0|finalUnnamedExtensionNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNullableWithoutInitializer
  */
  static late final int? finalUnnamedExtensionNullableWithoutInitializer;
  /*member: _#_extension#0|unnamedExtensionNonNullableWithInitializer:
   lateField,
   lateFieldInitializer=13,
   lateFieldName=_extension#0|unnamedExtensionNonNullableWithInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNonNullableWithInitializer
  */
  /*member: _extension#0|unnamedExtensionNonNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=13,
   lateFieldName=_extension#0|unnamedExtensionNonNullableWithInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNonNullableWithInitializer
  */
  /*member: _extension#0|unnamedExtensionNonNullableWithInitializer=:
   lateFieldInitializer=13,
   lateFieldName=_extension#0|unnamedExtensionNonNullableWithInitializer,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|unnamedExtensionNonNullableWithInitializer
  */
  static late int unnamedExtensionNonNullableWithInitializer = 13;
  /*member: _#_extension#0|finalUnnamedExtensionNonNullableWithInitializer:
   lateField,
   lateFieldInitializer=14,
   lateFieldName=_extension#0|finalUnnamedExtensionNonNullableWithInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNonNullableWithInitializer
  */
  /*member: _extension#0|finalUnnamedExtensionNonNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=14,
   lateFieldName=_extension#0|finalUnnamedExtensionNonNullableWithInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNonNullableWithInitializer
  */
  static late final int finalUnnamedExtensionNonNullableWithInitializer = 14;
  /*member: _#_extension#0|unnamedExtensionNullableWithInitializer:
   lateField,
   lateFieldInitializer=15,
   lateFieldName=_extension#0|unnamedExtensionNullableWithInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNullableWithInitializer
  */
  /*is-null.member: _#_extension#0|unnamedExtensionNullableWithInitializer#isSet:
   lateFieldInitializer=15,
   lateFieldName=_extension#0|unnamedExtensionNullableWithInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNullableWithInitializer,
   lateIsSetField
  */
  /*member: _extension#0|unnamedExtensionNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=15,
   lateFieldName=_extension#0|unnamedExtensionNullableWithInitializer,
   lateFieldTarget=_#_extension#0|unnamedExtensionNullableWithInitializer
  */
  /*member: _extension#0|unnamedExtensionNullableWithInitializer=:
   lateFieldInitializer=15,
   lateFieldName=_extension#0|unnamedExtensionNullableWithInitializer,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|unnamedExtensionNullableWithInitializer
  */
  static late int? unnamedExtensionNullableWithInitializer = 15;
  /*member: _#_extension#0|finalUnnamedExtensionNullableWithInitializer:
   lateField,
   lateFieldInitializer=16,
   lateFieldName=_extension#0|finalUnnamedExtensionNullableWithInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNullableWithInitializer
  */
  /*is-null.member: _#_extension#0|finalUnnamedExtensionNullableWithInitializer#isSet:
   lateFieldInitializer=16,
   lateFieldName=_extension#0|finalUnnamedExtensionNullableWithInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNullableWithInitializer,
   lateIsSetField
  */
  /*member: _extension#0|finalUnnamedExtensionNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=16,
   lateFieldName=_extension#0|finalUnnamedExtensionNullableWithInitializer,
   lateFieldTarget=_#_extension#0|finalUnnamedExtensionNullableWithInitializer
  */
  static late final int? finalUnnamedExtensionNullableWithInitializer = 16;
}

extension Extension on int? {
  /*member: _#Extension|namedExtensionNonNullableWithoutInitializer:
   lateField,
   lateFieldName=Extension|namedExtensionNonNullableWithoutInitializer,
   lateFieldTarget=_#Extension|namedExtensionNonNullableWithoutInitializer
  */
  /*member: Extension|namedExtensionNonNullableWithoutInitializer=:
   lateFieldName=Extension|namedExtensionNonNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=_#Extension|namedExtensionNonNullableWithoutInitializer
  */
  /*member: Extension|namedExtensionNonNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=Extension|namedExtensionNonNullableWithoutInitializer,
   lateFieldTarget=_#Extension|namedExtensionNonNullableWithoutInitializer
  */
  static late int namedExtensionNonNullableWithoutInitializer;
  /*member: _#Extension|finalNamedExtensionNonNullableWithoutInitializer:
   lateField,
   lateFieldName=Extension|finalNamedExtensionNonNullableWithoutInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNonNullableWithoutInitializer
  */
  /*member: Extension|finalNamedExtensionNonNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=Extension|finalNamedExtensionNonNullableWithoutInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNonNullableWithoutInitializer
  */
  /*member: Extension|finalNamedExtensionNonNullableWithoutInitializer=:
   lateFieldName=Extension|finalNamedExtensionNonNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=_#Extension|finalNamedExtensionNonNullableWithoutInitializer
  */
  static late final int finalNamedExtensionNonNullableWithoutInitializer;
  /*member: _#Extension|namedExtensionNullableWithoutInitializer:
   lateField,
   lateFieldName=Extension|namedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#Extension|namedExtensionNullableWithoutInitializer
  */
  /*is-null.member: _#Extension|namedExtensionNullableWithoutInitializer#isSet:
   lateFieldName=Extension|namedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#Extension|namedExtensionNullableWithoutInitializer,
   lateIsSetField
  */
  /*member: Extension|namedExtensionNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=Extension|namedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#Extension|namedExtensionNullableWithoutInitializer
  */
  /*member: Extension|namedExtensionNullableWithoutInitializer=:
   lateFieldName=Extension|namedExtensionNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=_#Extension|namedExtensionNullableWithoutInitializer
  */
  static late int? namedExtensionNullableWithoutInitializer;
  /*member: _#Extension|finalNamedExtensionNullableWithoutInitializer:
   lateField,
   lateFieldName=Extension|finalNamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNullableWithoutInitializer
  */
  /*is-null.member: _#Extension|finalNamedExtensionNullableWithoutInitializer#isSet:
   lateFieldName=Extension|finalNamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNullableWithoutInitializer,
   lateIsSetField
  */
  /*member: Extension|finalNamedExtensionNullableWithoutInitializer:
   lateFieldGetter,
   lateFieldName=Extension|finalNamedExtensionNullableWithoutInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNullableWithoutInitializer
  */
  /*member: Extension|finalNamedExtensionNullableWithoutInitializer=:
   lateFieldName=Extension|finalNamedExtensionNullableWithoutInitializer,
   lateFieldSetter,
   lateFieldTarget=_#Extension|finalNamedExtensionNullableWithoutInitializer
  */
  static late final int? finalNamedExtensionNullableWithoutInitializer;
  /*member: _#Extension|namedExtensionNonNullableWithInitializer:
   lateField,
   lateFieldInitializer=17,
   lateFieldName=Extension|namedExtensionNonNullableWithInitializer,
   lateFieldTarget=_#Extension|namedExtensionNonNullableWithInitializer
  */
  /*member: Extension|namedExtensionNonNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=17,
   lateFieldName=Extension|namedExtensionNonNullableWithInitializer,
   lateFieldTarget=_#Extension|namedExtensionNonNullableWithInitializer
  */
  /*member: Extension|namedExtensionNonNullableWithInitializer=:
   lateFieldInitializer=17,
   lateFieldName=Extension|namedExtensionNonNullableWithInitializer,
   lateFieldSetter,
   lateFieldTarget=_#Extension|namedExtensionNonNullableWithInitializer
  */
  static late int namedExtensionNonNullableWithInitializer = 17;
  /*member: _#Extension|finalNamedExtensionNonNullableWithInitializer:
   lateField,
   lateFieldInitializer=18,
   lateFieldName=Extension|finalNamedExtensionNonNullableWithInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNonNullableWithInitializer
  */
  /*member: Extension|finalNamedExtensionNonNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=18,
   lateFieldName=Extension|finalNamedExtensionNonNullableWithInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNonNullableWithInitializer
  */
  static late final int finalNamedExtensionNonNullableWithInitializer = 18;
  /*member: _#Extension|namedExtensionNullableWithInitializer:
   lateField,
   lateFieldInitializer=19,
   lateFieldName=Extension|namedExtensionNullableWithInitializer,
   lateFieldTarget=_#Extension|namedExtensionNullableWithInitializer
  */
  /*is-null.member: _#Extension|namedExtensionNullableWithInitializer#isSet:
   lateFieldInitializer=19,
   lateFieldName=Extension|namedExtensionNullableWithInitializer,
   lateFieldTarget=_#Extension|namedExtensionNullableWithInitializer,
   lateIsSetField
  */
  /*member: Extension|namedExtensionNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=19,
   lateFieldName=Extension|namedExtensionNullableWithInitializer,
   lateFieldTarget=_#Extension|namedExtensionNullableWithInitializer
  */
  /*member: Extension|namedExtensionNullableWithInitializer=:
   lateFieldInitializer=19,
   lateFieldName=Extension|namedExtensionNullableWithInitializer,
   lateFieldSetter,
   lateFieldTarget=_#Extension|namedExtensionNullableWithInitializer
  */
  static late int? namedExtensionNullableWithInitializer = 19;
  /*member: _#Extension|finalNamedExtensionNullableWithInitializer:
   lateField,
   lateFieldInitializer=20,
   lateFieldName=Extension|finalNamedExtensionNullableWithInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNullableWithInitializer
  */
  /*is-null.member: _#Extension|finalNamedExtensionNullableWithInitializer#isSet:
   lateFieldInitializer=20,
   lateFieldName=Extension|finalNamedExtensionNullableWithInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNullableWithInitializer,
   lateIsSetField
  */
  /*member: Extension|finalNamedExtensionNullableWithInitializer:
   lateFieldGetter,
   lateFieldInitializer=20,
   lateFieldName=Extension|finalNamedExtensionNullableWithInitializer,
   lateFieldTarget=_#Extension|finalNamedExtensionNullableWithInitializer
  */
  static late final int? finalNamedExtensionNullableWithInitializer = 20;
}

method() {
  late int
      /*
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      localNonNullableWithoutInitializer;
  late final int
      /*
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      finalLocalNonNullableWithoutInitializer;
  late int?
      /*is-null.
       lateIsSetLocal,
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      /*sentinel.
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      localNullableWithoutInitializer;
  late final int?
      /*is-null.
       lateIsSetLocal,
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      /*sentinel.
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      finalLocalNullableWithoutInitializer;
  late int
      /*
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      localNonNullableWithInitializer = 21;
  late final int /*
       lateLocal,
       lateLocalGetter
      */
      finalLocalNonNullableWithInitializer = 22;
  late int?
      /*is-null.
       lateIsSetLocal,
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      /*sentinel.
       lateLocal,
       lateLocalGetter,
       lateLocalSetter
      */
      localNullableWithInitializer = 23;
  late final int?
      /*is-null.
       lateIsSetLocal,
       lateLocal,
       lateLocalGetter
      */
      /*sentinel.
       lateLocal,
       lateLocalGetter
      */
      finalLocalNullableWithInitializer = 24;
}
