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

class Foo extends core::Object {
  field dynamic field1 = null;
  field dynamic field2 = null;
  field dynamic field3 = null;
  constructor constructor1() → self::Foo*
    : super core::Object::•()
    ;
  constructor constructor2() → self::Foo*
    : super core::Object::•()
    ;
  constructor constructor3() → self::Foo*
    : super core::Object::•()
    ;
  method a() → dynamic {}
  method b() → dynamic {}
  method c() → dynamic {}
  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*;
}
