library;
//
// Problems in library:
//
// 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: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: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:36:12: Error: 'methodAndFinalFieldAndSetter1' is already declared in this scope.
//   void set methodAndFinalFieldAndSetter1(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// 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:43:8: Error: 'methodAndFinalFieldAndSetter3' is already declared in this scope.
//   int? methodAndFinalFieldAndSetter3() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:42:12: Context: Previous declaration of 'methodAndFinalFieldAndSetter3'.
//   void set methodAndFinalFieldAndSetter3(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// 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
  ;
