library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/value_class/value_mixin_error.dart:13:7: Error: 'C' is already declared in this scope.
// class C extends A with B {} // error, C extends a value class
//       ^
// pkg/front_end/testcases/value_class/value_mixin_error.dart:12:7: Context: Previous declaration of 'C'.
// class C extends B with A {} // error, value class as mixin
//       ^
//
import self as self;
import "dart:core" as core;

@self::valueClass
class A extends core::Object {
  synthetic constructor •() → self::A
    ;
}
class B extends core::Object {
  synthetic constructor •() → self::B
    ;
}
abstract class _C&B&A = self::B with self::A /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C&B&A
    : super self::B::•()
    ;
}
class C#1 extends self::_C&A&B {
  synthetic constructor •() → self::C#1
    ;
}
class C extends self::_C&B&A {
  synthetic constructor •() → self::C
    ;
}
abstract class _C&A&B = self::A with self::B /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C&A&B
    : super self::A::•()
    ;
}
static const field core::String valueClass = "valueClass";
static method main() → dynamic
  ;
