library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:7:8: Error: 'methodAndField1' is already declared in this scope.
//   int? methodAndField1;
//        ^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:6:8: Context: Previous declaration of 'methodAndField1'.
//   int? methodAndField1() {}
//        ^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:10:8: Error: 'methodAndField2' is already declared in this scope.
//   int? methodAndField2() {}
//        ^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:9:8: Context: Previous declaration of 'methodAndField2'.
//   int? methodAndField2;
//        ^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:13:14: Error: 'methodAndFinalField1' is already declared in this scope.
//   final int? methodAndFinalField1 = 0;
//              ^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:12:8: Context: Previous declaration of 'methodAndFinalField1'.
//   int? methodAndFinalField1() {}
//        ^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:16:8: Error: 'methodAndFinalField2' is already declared in this scope.
//   int? methodAndFinalField2() {}
//        ^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:15:14: Context: Previous declaration of 'methodAndFinalField2'.
//   final int? methodAndFinalField2 = 0;
//              ^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:19:8: Error: 'methodAndFieldAndSetter1' is already declared in this scope.
//   int? methodAndFieldAndSetter1;
//        ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:18:8: Context: Previous declaration of 'methodAndFieldAndSetter1'.
//   int? methodAndFieldAndSetter1() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:23:8: Error: 'methodAndFieldAndSetter2' is already declared in this scope.
//   int? methodAndFieldAndSetter2() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:22:8: Context: Previous declaration of 'methodAndFieldAndSetter2'.
//   int? methodAndFieldAndSetter2;
//        ^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:28:8: Error: 'methodAndFieldAndSetter3' is already declared in this scope.
//   int? methodAndFieldAndSetter3;
//        ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:27:8: Context: Previous declaration of 'methodAndFieldAndSetter3'.
//   int? methodAndFieldAndSetter3() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:32:8: Error: 'methodAndFieldAndSetter4' is already declared in this scope.
//   int? methodAndFieldAndSetter4() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:31:8: Context: Previous declaration of 'methodAndFieldAndSetter4'.
//   int? methodAndFieldAndSetter4;
//        ^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:35:14: Error: 'methodAndFinalFieldAndSetter1' is already declared in this scope.
//   final int? methodAndFinalFieldAndSetter1 = 0;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:34:8: Context: Previous declaration of 'methodAndFinalFieldAndSetter1'.
//   int? methodAndFinalFieldAndSetter1() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:39:8: Error: 'methodAndFinalFieldAndSetter2' is already declared in this scope.
//   int? methodAndFinalFieldAndSetter2() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:38:14: Context: Previous declaration of 'methodAndFinalFieldAndSetter2'.
//   final int? methodAndFinalFieldAndSetter2 = 0;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:44:14: Error: 'methodAndFinalFieldAndSetter3' is already declared in this scope.
//   final int? methodAndFinalFieldAndSetter3 = 0;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:43:8: Context: Previous declaration of 'methodAndFinalFieldAndSetter3'.
//   int? methodAndFinalFieldAndSetter3() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:48:8: Error: 'methodAndFinalFieldAndSetter4' is already declared in this scope.
//   int? methodAndFinalFieldAndSetter4() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:47:14: Context: Previous declaration of 'methodAndFinalFieldAndSetter4'.
//   final int? methodAndFinalFieldAndSetter4 = 0;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:54:3: Error: The return type of the setter must be 'void' or absent.
// Try removing the return type, or define a method rather than a setter.
//   int? set methodAndSetter2() {}
//   ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:63:14: Error: 'fieldAndFinalFieldAndSetter1' is already declared in this scope.
//   final int? fieldAndFinalFieldAndSetter1 = 0;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:62:8: Context: Previous declaration of 'fieldAndFinalFieldAndSetter1'.
//   int? fieldAndFinalFieldAndSetter1;
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:67:8: Error: 'fieldAndFinalFieldAndSetter2' is already declared in this scope.
//   int? fieldAndFinalFieldAndSetter2;
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:66:14: Context: Previous declaration of 'fieldAndFinalFieldAndSetter2'.
//   final int? fieldAndFinalFieldAndSetter2 = 0;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:72:14: Error: 'fieldAndFinalFieldAndSetter3' is already declared in this scope.
//   final int? fieldAndFinalFieldAndSetter3 = 0;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:71:8: Context: Previous declaration of 'fieldAndFinalFieldAndSetter3'.
//   int? fieldAndFinalFieldAndSetter3;
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:76:8: Error: 'fieldAndFinalFieldAndSetter4' is already declared in this scope.
//   int? fieldAndFinalFieldAndSetter4;
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:75:14: Context: Previous declaration of 'fieldAndFinalFieldAndSetter4'.
//   final int? fieldAndFinalFieldAndSetter4 = 0;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:20:12: Error: Conflicts with the implicit setter of the field 'methodAndFieldAndSetter1'.
//   void set methodAndFieldAndSetter1(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:19:8: Error: Conflicts with setter 'methodAndFieldAndSetter1'.
//   int? methodAndFieldAndSetter1;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:24:12: Error: Conflicts with the implicit setter of the field 'methodAndFieldAndSetter2'.
//   void set methodAndFieldAndSetter2(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:22:8: Error: Conflicts with setter 'methodAndFieldAndSetter2'.
//   int? methodAndFieldAndSetter2;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:26:12: Error: Conflicts with the implicit setter of the field 'methodAndFieldAndSetter3'.
//   void set methodAndFieldAndSetter3(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:28:8: Error: Conflicts with setter 'methodAndFieldAndSetter3'.
//   int? methodAndFieldAndSetter3;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:30:12: Error: Conflicts with the implicit setter of the field 'methodAndFieldAndSetter4'.
//   void set methodAndFieldAndSetter4(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:31:8: Error: Conflicts with setter 'methodAndFieldAndSetter4'.
//   int? methodAndFieldAndSetter4;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:57:12: Error: Conflicts with the implicit setter of the field 'fieldAndSetter1'.
//   void set fieldAndSetter1(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:56:8: Error: Conflicts with setter 'fieldAndSetter1'.
//   int? fieldAndSetter1;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:60:12: Error: Conflicts with the implicit setter of the field 'fieldAndSetter2'.
//   void set fieldAndSetter2(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:59:8: Error: Conflicts with setter 'fieldAndSetter2'.
//   int? fieldAndSetter2;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:64:12: Error: Conflicts with the implicit setter of the field 'fieldAndFinalFieldAndSetter1'.
//   void set fieldAndFinalFieldAndSetter1(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:62:8: Error: Conflicts with setter 'fieldAndFinalFieldAndSetter1'.
//   int? fieldAndFinalFieldAndSetter1;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:68:12: Error: Conflicts with the implicit setter of the field 'fieldAndFinalFieldAndSetter2'.
//   void set fieldAndFinalFieldAndSetter2(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:67:8: Error: Conflicts with setter 'fieldAndFinalFieldAndSetter2'.
//   int? fieldAndFinalFieldAndSetter2;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:70:12: Error: Conflicts with the implicit setter of the field 'fieldAndFinalFieldAndSetter3'.
//   void set fieldAndFinalFieldAndSetter3(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:71:8: Error: Conflicts with setter 'fieldAndFinalFieldAndSetter3'.
//   int? fieldAndFinalFieldAndSetter3;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:74:12: Error: Conflicts with the implicit setter of the field 'fieldAndFinalFieldAndSetter4'.
//   void set fieldAndFinalFieldAndSetter4(int? value) {}
//            ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:76:8: Error: Conflicts with setter 'fieldAndFinalFieldAndSetter4'.
//   int? fieldAndFinalFieldAndSetter4;
//        ^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:40:12: Error: 'methodAndFinalFieldAndSetter2' is already declared in this scope.
//   void set methodAndFinalFieldAndSetter2(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:39:8: Context: Previous declaration of 'methodAndFinalFieldAndSetter2'.
//   int? methodAndFinalFieldAndSetter2() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:51:12: Error: 'methodAndSetter1' is already declared in this scope.
//   void set methodAndSetter1(int? value) {}
//            ^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:50:8: Context: Previous declaration of 'methodAndSetter1'.
//   int? methodAndSetter1() {}
//        ^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:54:12: Error: 'methodAndSetter2' is already declared in this scope.
//   int? set methodAndSetter2() {}
//            ^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:53:8: Context: Previous declaration of 'methodAndSetter2'.
//   void methodAndSetter2(int? value) {}
//        ^^^^^^^^^^^^^^^^
//
import self as self;
import "dart:core" as core;

class Class extends core::Object {
  field core::int? methodAndField2;
  final field core::int? methodAndFinalField2;
  field core::int? methodAndFieldAndSetter2;
  field core::int? methodAndFieldAndSetter4;
  final field core::int? methodAndFinalFieldAndSetter2;
  final field core::int? methodAndFinalFieldAndSetter4;
  field core::int? fieldAndSetter1;
  field core::int? fieldAndSetter2;
  field core::int? fieldAndFinalFieldAndSetter1;
  final field core::int? fieldAndFinalFieldAndSetter2;
  field core::int? fieldAndFinalFieldAndSetter3;
  final field core::int? fieldAndFinalFieldAndSetter4;
  synthetic constructor •() → self::Class
    ;
  method methodAndField1() → core::int?
    ;
  method methodAndFinalField1() → core::int?
    ;
  method methodAndFieldAndSetter1() → core::int?
    ;
  method methodAndFieldAndSetter3() → core::int?
    ;
  method methodAndFinalFieldAndSetter1() → core::int?
    ;
  set methodAndFinalFieldAndSetter1(core::int? value) → void
    ;
  set methodAndFinalFieldAndSetter2(core::int? value) → void
    ;
  set methodAndFinalFieldAndSetter3(core::int? value) → void
    ;
  method methodAndFinalFieldAndSetter3() → core::int?
    ;
  set methodAndFinalFieldAndSetter4(core::int? value) → void
    ;
  method methodAndSetter1() → core::int?
    ;
  set methodAndSetter1(core::int? value) → void
    ;
  method methodAndSetter2(core::int? value) → void
    ;
  set methodAndSetter2(dynamic #synthetic) → void
    ;
}
static method test(self::Class c) → dynamic
  ;
static method main() → dynamic
  ;
