library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue_46886.dart:8:16: Error: This requires the 'triple-shift' language feature to be enabled.
// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.14 or higher, and running 'pub get'.
//   Foo operator >>>(_) => this;
//                ^^^
//
import self as self;
import "dart:core" as core;

class Foo extends core::Object {
  synthetic constructor •() → self::Foo
    ;
  operator >>>(dynamic _) → self::Foo
    ;
}
abstract class Bar extends core::Object implements core::List<core::List<core::List<core::String>>> {
  synthetic constructor •() → self::Bar
    ;
}
extension _extension#0 on core::Symbol {
  operator > = self::_extension#0|>;
  method call = self::_extension#0|call;
  tearoff call = self::_extension#0|get#call;
}
static method _extension#0|>(lowered final core::Symbol #this, dynamic _) → core::String
  ;
static method _extension#0|call(lowered final core::Symbol #this, dynamic _) → core::String
  ;
static method _extension#0|get#call(lowered final core::Symbol #this) → (dynamic) → core::String
  return (dynamic _) → core::String => self::_extension#0|call(#this, _);
static method main() → dynamic
  ;
