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

import "package:expect/expect.dart";

class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  get one() → core::int
    return 1;
}
extension E on self::C {
  get two = self::E|get#two;
}
static extension-member method E|get#two(lowered final self::C #this) → core::int
  return 2;
static method main() → dynamic {
  self::C c = new self::C::•();
  core::int result = c.{self::C::one}{core::int}.{core::num::+}(self::E|get#two(c)){(core::num) → core::int};
  exp::Expect::equals(result, 3);
}
