library;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;
import "dart:typed_data" as typ;

import "dart:typed_data";
import "package:expect/expect.dart";

class Foo extends core::Object {
  final field dynamic value;
  constructor •(dynamic value) → self::Foo
    : self::Foo::value = value, super core::Object::•() {}
  static factory fac(dynamic value) → self::Foo {
    return new self::Foo::•(value);
  }
}
static field core::List<core::int> list = <core::int>[1, 2, 3];
static method main() → dynamic {
  exp::Expect::isTrue(typ::Uint8List::fromList(self::list).{core::List::[]}(1).{core::num::==}(2));
  exp::Expect::isTrue(self::Foo::fac(10).{self::Foo::value}.{core::Object::==}(10));
}
