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:20:12: Error: The setter conflicts with declaration 'methodAndFieldAndSetter1'.
//   void set methodAndFieldAndSetter1(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:18:8: Context: Conflicting declaration 'methodAndFieldAndSetter1'.
//   int? methodAndFieldAndSetter1() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^
//
// 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: Context: Field 'methodAndFieldAndSetter1' with the implicit setter.
//   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: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: Context: Field 'methodAndFieldAndSetter2' with the implicit setter.
//   int? methodAndFieldAndSetter2;
//        ^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:24:12: Error: The setter conflicts with declaration 'methodAndFieldAndSetter2'.
//   void set methodAndFieldAndSetter2(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:23:8: Context: Conflicting declaration 'methodAndFieldAndSetter2'.
//   int? methodAndFieldAndSetter2() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:27:8: Error: The declaration conflicts with setter 'methodAndFieldAndSetter3'.
//   int? methodAndFieldAndSetter3() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:26:12: Context: Conflicting setter 'methodAndFieldAndSetter3'.
//   void set methodAndFieldAndSetter3(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:28:8: Error: The declaration conflicts with setter 'methodAndFieldAndSetter3'.
//   int? methodAndFieldAndSetter3;
//        ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:26:12: Context: Conflicting setter 'methodAndFieldAndSetter3'.
//   void set methodAndFieldAndSetter3(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^
//
// 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:31:8: Error: The declaration conflicts with setter 'methodAndFieldAndSetter4'.
//   int? methodAndFieldAndSetter4;
//        ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:30:12: Context: Conflicting setter 'methodAndFieldAndSetter4'.
//   void set methodAndFieldAndSetter4(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:32:8: Error: The declaration conflicts with setter 'methodAndFieldAndSetter4'.
//   int? methodAndFieldAndSetter4() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:30:12: Context: Conflicting setter 'methodAndFieldAndSetter4'.
//   void set methodAndFieldAndSetter4(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^
//
// 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:36:12: Error: The setter conflicts with declaration 'methodAndFinalFieldAndSetter1'.
//   void set methodAndFinalFieldAndSetter1(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:34:8: Context: Conflicting declaration '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:43:8: Error: The declaration conflicts with setter 'methodAndFinalFieldAndSetter3'.
//   int? methodAndFinalFieldAndSetter3() {}
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:42:12: Context: Conflicting setter 'methodAndFinalFieldAndSetter3'.
//   void set methodAndFinalFieldAndSetter3(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// 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:51:12: Error: The setter conflicts with declaration 'methodAndSetter1'.
//   void set methodAndSetter1(int? value) {}
//            ^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:50:8: Context: Conflicting declaration 'methodAndSetter1'.
//   int? methodAndSetter1() {}
//        ^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:54:12: Error: The setter conflicts with declaration 'methodAndSetter2'.
//   int? set methodAndSetter2() {}
//            ^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:53:8: Context: Conflicting declaration 'methodAndSetter2'.
//   void methodAndSetter2(int? value) {}
//        ^^^^^^^^^^^^^^^^
//
// 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: Context: Field 'fieldAndSetter1' with the implicit setter.
//   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: Context: Field 'fieldAndSetter2' with the implicit setter.
//   int? fieldAndSetter2;
//        ^^^^^^^^^^^^^^^
//
// 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: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: Context: Field 'fieldAndFinalFieldAndSetter1' with the implicit setter.
//   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:71:8: Error: The declaration conflicts with setter 'fieldAndFinalFieldAndSetter3'.
//   int? fieldAndFinalFieldAndSetter3;
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/nnbd/instance_duplicates.dart:70:12: Context: Conflicting setter 'fieldAndFinalFieldAndSetter3'.
//   void set fieldAndFinalFieldAndSetter3(int? value) {}
//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// 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;
//              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
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;
  final field core::int? methodAndFinalFieldAndSetter2;
  final field core::int? methodAndFinalFieldAndSetter3;
  final field core::int? methodAndFinalFieldAndSetter4;
  field core::int? fieldAndSetter1;
  field core::int? fieldAndSetter2;
  field core::int? fieldAndFinalFieldAndSetter1;
  final field core::int? fieldAndFinalFieldAndSetter2;
  final 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?
    ;
  set methodAndFieldAndSetter3(core::int? value) → void
    ;
  set methodAndFieldAndSetter4(core::int? value) → void
    ;
  method methodAndFinalFieldAndSetter1() → core::int?
    ;
  set methodAndFinalFieldAndSetter2(core::int? value) → void
    ;
  set methodAndFinalFieldAndSetter3(core::int? value) → void
    ;
  set methodAndFinalFieldAndSetter4(core::int? value) → void
    ;
  method methodAndSetter1() → core::int?
    ;
  method methodAndSetter2(core::int? value) → void
    ;
  set fieldAndFinalFieldAndSetter2(core::int? value) → void
    ;
  set fieldAndFinalFieldAndSetter3(core::int? value) → void
    ;
  set fieldAndFinalFieldAndSetter4(core::int? value) → void
    ;
}
static method test(self::Class c) → dynamic
  ;
static method main() → dynamic
  ;
