This file was autogenerated from running the shaker test suite.
To update this file, either copy the output from a failing test or run
pkg/front_end/tool/fasta testing shaker -DupdateExpectations=true
----- pkg/front_end/testcases/shaker/transitive_mixins.dart
library;
import self as self;
import "./transitive_mixins_lib.dart" as tra;

static field tra::C v;

----- external pkg/front_end/testcases/shaker/transitive_mixins_lib.dart
library;
import self as self;
import "dart:core" as core;

class A extends core::Object {
}
class B extends core::Object {
}
abstract class _C&Object&A extends core::Object implements self::A {
}
class C extends self::_C&Object&A implements self::B {
}

