library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/inline_class/representation.dart:23:13: Error: 'instanceField' is already declared in this scope.
//   final int instanceField;
//             ^^^^^^^^^^^^^
// pkg/front_end/testcases/inline_class/representation.dart:22:14: Context: Previous declaration of 'instanceField'.
//   final bool instanceField;
//              ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/inline_class/representation.dart:25:18: Error: Can't use 'instanceField' because it is declared more than once.
//   Duplicate(this.instanceField);
//                  ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/inline_class/representation.dart:16:13: Error: Final field 'instanceField2' is not initialized.
// Try to initialize the field in the declaration or in every constructor.
//   final int instanceField2;
//             ^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/inline_class/representation.dart:22:14: Error: Final field 'instanceField' is not initialized.
// Try to initialize the field in the declaration or in every constructor.
//   final bool instanceField;
//              ^^^^^^^^^^^^^
//
import self as self;
import "dart:core" as core;

inline class Missing /* declaredRepresentationType = invalid-type */ {
}
inline class Static /* declaredRepresentationType = core::bool */ {
  static field staticField = self::Static|staticField;
  constructor • = self::Static|;
}
inline class Multiple /* declaredRepresentationType = core::bool */ {
  constructor • = self::Multiple|;
}
inline class Duplicate /* declaredRepresentationType = core::bool */ {
  constructor • = self::Duplicate|;
}
static field core::int Static|staticField = 42;
static method Static|(core::bool instanceField) → self::Static {
  final self::Static #this = instanceField;
  return #this;
}
static method Multiple|(core::bool instanceField1) → self::Multiple {
  final self::Multiple #this = instanceField1;
  return #this;
}
static method Duplicate|(core::int instanceField) → self::Duplicate {
  final self::Duplicate #this;
  final dynamic #t1 = invalid-expression "pkg/front_end/testcases/inline_class/representation.dart:25:18: Error: Can't use 'instanceField' because it is declared more than once.
  Duplicate(this.instanceField);
                 ^^^^^^^^^^^^^";
  return #this;
}
