// Copyright (c) 2021, 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: _#a:
 lateField,
 lateFieldName=a,
 lateFieldTarget=_#a
*/
/*is-null.member: _#a#isSet:
 lateFieldName=a,
 lateFieldTarget=_#a,
 lateIsSetField
*/
/*member: a:
 lateFieldGetter,
 lateFieldName=a,
 lateFieldTarget=_#a
*/
/*member: a=:
 lateFieldName=a,
 lateFieldSetter,
 lateFieldTarget=_#a
*/
late int? a;

/*member: _#aa:
 lateField,
 lateFieldName=aa,
 lateFieldTarget=_#aa
*/
/*is-null.member: _#aa#isSet:
 lateFieldName=aa,
 lateFieldTarget=_#aa,
 lateIsSetField
*/
/*member: aa:
 lateFieldGetter,
 lateFieldName=aa,
 lateFieldTarget=_#aa
*/
/*member: aa=:
 lateFieldName=aa,
 lateFieldSetter,
 lateFieldTarget=_#aa
*/
late int? aa;

/*member: _#_a:
 lateField,
 lateFieldName=_a,
 lateFieldTarget=_#_a
*/
/*is-null.member: _#_a#isSet:
 lateFieldName=_a,
 lateFieldTarget=_#_a,
 lateIsSetField
*/
/*member: _a:
 lateFieldGetter,
 lateFieldName=_a,
 lateFieldTarget=_#_a
*/
/*member: _a=:
 lateFieldName=_a,
 lateFieldSetter,
 lateFieldTarget=_#_a
*/
late int? _a;

class Class {
  /*member: Class._#Class#a:
   lateField,
   lateFieldName=a,
   lateFieldTarget=Class._#Class#a
  */
  /*is-null.member: Class._#Class#a#isSet:
   lateFieldName=a,
   lateFieldTarget=Class._#Class#a,
   lateIsSetField
  */
  /*member: Class.a:
   lateFieldGetter,
   lateFieldName=a,
   lateFieldTarget=Class._#Class#a
  */
  /*member: Class.a=:
   lateFieldName=a,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#a
  */
  late int? a;
  /*member: Class._#Class#aa:
   lateField,
   lateFieldName=aa,
   lateFieldTarget=Class._#Class#aa
  */
  /*is-null.member: Class._#Class#aa#isSet:
   lateFieldName=aa,
   lateFieldTarget=Class._#Class#aa,
   lateIsSetField
  */
  /*member: Class.aa:
   lateFieldGetter,
   lateFieldName=aa,
   lateFieldTarget=Class._#Class#aa
  */
  /*member: Class.aa=:
   lateFieldName=aa,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#aa
  */
  late int? aa;
  /*member: Class._#Class#_a:
   lateField,
   lateFieldName=_a,
   lateFieldTarget=Class._#Class#_a
  */
  /*is-null.member: Class._#Class#_a#isSet:
   lateFieldName=_a,
   lateFieldTarget=Class._#Class#_a,
   lateIsSetField
  */
  /*member: Class._a:
   lateFieldGetter,
   lateFieldName=_a,
   lateFieldTarget=Class._#Class#_a
  */
  /*member: Class._a=:
   lateFieldName=_a,
   lateFieldSetter,
   lateFieldTarget=Class._#Class#_a
  */
  late int? _a;

  /*member: Class._#b:
   lateField,
   lateFieldName=b,
   lateFieldTarget=Class._#b
  */
  /*is-null.member: Class._#b#isSet:
   lateFieldName=b,
   lateFieldTarget=Class._#b,
   lateIsSetField
  */
  /*member: Class.b:
   lateFieldGetter,
   lateFieldName=b,
   lateFieldTarget=Class._#b
  */
  /*member: Class.b=:
   lateFieldName=b,
   lateFieldSetter,
   lateFieldTarget=Class._#b
  */
  static late int? b;
  /*member: Class._#bb:
   lateField,
   lateFieldName=bb,
   lateFieldTarget=Class._#bb
  */
  /*is-null.member: Class._#bb#isSet:
   lateFieldName=bb,
   lateFieldTarget=Class._#bb,
   lateIsSetField
  */
  /*member: Class.bb:
   lateFieldGetter,
   lateFieldName=bb,
   lateFieldTarget=Class._#bb
  */
  /*member: Class.bb=:
   lateFieldName=bb,
   lateFieldSetter,
   lateFieldTarget=Class._#bb
  */
  static late int? bb;
  /*member: Class._#_b:
   lateField,
   lateFieldName=_b,
   lateFieldTarget=Class._#_b
  */
  /*is-null.member: Class._#_b#isSet:
   lateFieldName=_b,
   lateFieldTarget=Class._#_b,
   lateIsSetField
  */
  /*member: Class._b:
   lateFieldGetter,
   lateFieldName=_b,
   lateFieldTarget=Class._#_b
  */
  /*member: Class._b=:
   lateFieldName=_b,
   lateFieldSetter,
   lateFieldTarget=Class._#_b
  */
  static late int? _b;
}

class _Class {
  /*member: _Class._#_Class#a:
   lateField,
   lateFieldName=a,
   lateFieldTarget=_Class._#_Class#a
  */
  /*is-null.member: _Class._#_Class#a#isSet:
   lateFieldName=a,
   lateFieldTarget=_Class._#_Class#a,
   lateIsSetField
  */
  /*member: _Class.a:
   lateFieldGetter,
   lateFieldName=a,
   lateFieldTarget=_Class._#_Class#a
  */
  /*member: _Class.a=:
   lateFieldName=a,
   lateFieldSetter,
   lateFieldTarget=_Class._#_Class#a
  */
  late int? a;
  /*member: _Class._#_Class#aa:
   lateField,
   lateFieldName=aa,
   lateFieldTarget=_Class._#_Class#aa
  */
  /*is-null.member: _Class._#_Class#aa#isSet:
   lateFieldName=aa,
   lateFieldTarget=_Class._#_Class#aa,
   lateIsSetField
  */
  /*member: _Class.aa:
   lateFieldGetter,
   lateFieldName=aa,
   lateFieldTarget=_Class._#_Class#aa
  */
  /*member: _Class.aa=:
   lateFieldName=aa,
   lateFieldSetter,
   lateFieldTarget=_Class._#_Class#aa
  */
  late int? aa;
  /*member: _Class._#_Class#_a:
   lateField,
   lateFieldName=_a,
   lateFieldTarget=_Class._#_Class#_a
  */
  /*is-null.member: _Class._#_Class#_a#isSet:
   lateFieldName=_a,
   lateFieldTarget=_Class._#_Class#_a,
   lateIsSetField
  */
  /*member: _Class._a:
   lateFieldGetter,
   lateFieldName=_a,
   lateFieldTarget=_Class._#_Class#_a
  */
  /*member: _Class._a=:
   lateFieldName=_a,
   lateFieldSetter,
   lateFieldTarget=_Class._#_Class#_a
  */
  late int? _a;

  /*member: _Class._#b:
   lateField,
   lateFieldName=b,
   lateFieldTarget=_Class._#b
  */
  /*is-null.member: _Class._#b#isSet:
   lateFieldName=b,
   lateFieldTarget=_Class._#b,
   lateIsSetField
  */
  /*member: _Class.b:
   lateFieldGetter,
   lateFieldName=b,
   lateFieldTarget=_Class._#b
  */
  /*member: _Class.b=:
   lateFieldName=b,
   lateFieldSetter,
   lateFieldTarget=_Class._#b
  */
  static late int? b;
  /*member: _Class._#bb:
   lateField,
   lateFieldName=bb,
   lateFieldTarget=_Class._#bb
  */
  /*is-null.member: _Class._#bb#isSet:
   lateFieldName=bb,
   lateFieldTarget=_Class._#bb,
   lateIsSetField
  */
  /*member: _Class.bb:
   lateFieldGetter,
   lateFieldName=bb,
   lateFieldTarget=_Class._#bb
  */
  /*member: _Class.bb=:
   lateFieldName=bb,
   lateFieldSetter,
   lateFieldTarget=_Class._#bb
  */
  static late int? bb;
  /*member: _Class._#_b:
   lateField,
   lateFieldName=_b,
   lateFieldTarget=_Class._#_b
  */
  /*is-null.member: _Class._#_b#isSet:
   lateFieldName=_b,
   lateFieldTarget=_Class._#_b,
   lateIsSetField
  */
  /*member: _Class._b:
   lateFieldGetter,
   lateFieldName=_b,
   lateFieldTarget=_Class._#_b
  */
  /*member: _Class._b=:
   lateFieldName=_b,
   lateFieldSetter,
   lateFieldTarget=_Class._#_b
  */
  static late int? _b;
}

extension on int? {
  /*member: _#_extension#0|a:
   lateField,
   lateFieldName=_extension#0|a,
   lateFieldTarget=_#_extension#0|a
  */
  /*is-null.member: _#_extension#0|a#isSet:
   lateFieldName=_extension#0|a,
   lateFieldTarget=_#_extension#0|a,
   lateIsSetField
  */
  /*member: _extension#0|a:
   lateFieldGetter,
   lateFieldName=_extension#0|a,
   lateFieldTarget=_#_extension#0|a
  */
  /*member: _extension#0|a=:
   lateFieldName=_extension#0|a,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|a
  */
  static late int? a;
  /*member: _#_extension#0|aa:
   lateField,
   lateFieldName=_extension#0|aa,
   lateFieldTarget=_#_extension#0|aa
  */
  /*is-null.member: _#_extension#0|aa#isSet:
   lateFieldName=_extension#0|aa,
   lateFieldTarget=_#_extension#0|aa,
   lateIsSetField
  */
  /*member: _extension#0|aa:
   lateFieldGetter,
   lateFieldName=_extension#0|aa,
   lateFieldTarget=_#_extension#0|aa
  */
  /*member: _extension#0|aa=:
   lateFieldName=_extension#0|aa,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|aa
  */
  static late int? aa;
  /*member: _#_extension#0|_b:
   lateField,
   lateFieldName=_extension#0|_b,
   lateFieldTarget=_#_extension#0|_b
  */
  /*is-null.member: _#_extension#0|_b#isSet:
   lateFieldName=_extension#0|_b,
   lateFieldTarget=_#_extension#0|_b,
   lateIsSetField
  */
  /*member: _extension#0|_b:
   lateFieldGetter,
   lateFieldName=_extension#0|_b,
   lateFieldTarget=_#_extension#0|_b
  */
  /*member: _extension#0|_b=:
   lateFieldName=_extension#0|_b,
   lateFieldSetter,
   lateFieldTarget=_#_extension#0|_b
  */
  static late int? _b;
}

extension _Extension on int? {
  /*member: _#_Extension|a:
   lateField,
   lateFieldName=_Extension|a,
   lateFieldTarget=_#_Extension|a
  */
  /*is-null.member: _#_Extension|a#isSet:
   lateFieldName=_Extension|a,
   lateFieldTarget=_#_Extension|a,
   lateIsSetField
  */
  /*member: _Extension|a:
   lateFieldGetter,
   lateFieldName=_Extension|a,
   lateFieldTarget=_#_Extension|a
  */
  /*member: _Extension|a=:
   lateFieldName=_Extension|a,
   lateFieldSetter,
   lateFieldTarget=_#_Extension|a
  */
  static late int? a;
  /*member: _#_Extension|aa:
   lateField,
   lateFieldName=_Extension|aa,
   lateFieldTarget=_#_Extension|aa
  */
  /*is-null.member: _#_Extension|aa#isSet:
   lateFieldName=_Extension|aa,
   lateFieldTarget=_#_Extension|aa,
   lateIsSetField
  */
  /*member: _Extension|aa:
   lateFieldGetter,
   lateFieldName=_Extension|aa,
   lateFieldTarget=_#_Extension|aa
  */
  /*member: _Extension|aa=:
   lateFieldName=_Extension|aa,
   lateFieldSetter,
   lateFieldTarget=_#_Extension|aa
  */
  static late int? aa;
  /*member: _#_Extension|_b:
   lateField,
   lateFieldName=_Extension|_b,
   lateFieldTarget=_#_Extension|_b
  */
  /*is-null.member: _#_Extension|_b#isSet:
   lateFieldName=_Extension|_b,
   lateFieldTarget=_#_Extension|_b,
   lateIsSetField
  */
  /*member: _Extension|_b:
   lateFieldGetter,
   lateFieldName=_Extension|_b,
   lateFieldTarget=_#_Extension|_b
  */
  /*member: _Extension|_b=:
   lateFieldName=_Extension|_b,
   lateFieldSetter,
   lateFieldTarget=_#_Extension|_b
  */
  static late int? _b;
}
