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_class_type_parameter_bound.dart
library;
import self as self;
import "./transitive_class_type_parameter_bound_lib.dart" as tra;

static field tra::B<dynamic> b;

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

class A extends core::Object {
  field core::int field;
}
class B<T extends self::A> extends core::Object {
  field core::int field;
}

