library;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;

class Bar extends core::Object {
  @#C2
  external get x() → self::Bar*;
  @#C4
  external set x(self::Bar* value) → void;
  @#C6
  external method f() → dynamic;
  @#C8
  external static factory •() → self::Bar*;
  abstract member-signature get _identityHashCode() → core::int*;
  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
  abstract member-signature operator ==(dynamic other) → core::bool*;
  abstract member-signature get hashCode() → core::int*;
  abstract member-signature method toString() → core::String*;
  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
  abstract member-signature get runtimeType() → core::Type*;
}
@#C10
external static method foo() → dynamic;

constants  {
  #C1 = "Bar_get_x"
  #C2 = _in::ExternalName {name:#C1}
  #C3 = "Bar_set_x"
  #C4 = _in::ExternalName {name:#C3}
  #C5 = "Bar_f"
  #C6 = _in::ExternalName {name:#C5}
  #C7 = "Bar_constructor"
  #C8 = _in::ExternalName {name:#C7}
  #C9 = "foo"
  #C10 = _in::ExternalName {name:#C9}
}
