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

class Class extends core::Object {
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
  method method() → self::Class
    return this;
}
extension Extension on self::Class {
  method extensionMethod = self::Extension|extensionMethod;
  method tearoff extensionMethod = self::Extension|get#extensionMethod;
}
static extension-member method Extension|extensionMethod(lowered final self::Class #this) → self::Class
  return #this;
static extension-member method Extension|get#extensionMethod(lowered final self::Class #this) → () → self::Class
  return () → self::Class => self::Extension|extensionMethod(#this);
static method main() → dynamic {
  self::Class? c;
  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : block {
    #t1{self::Class}.{self::Class::method}(){() → self::Class};
  } =>#t1;
  let final self::Class? #t2 = c in #t2 == null ?{self::Class?} null : block {
    #t2{self::Class}.{self::Class::method}(){() → self::Class};
    #t2{self::Class}.{self::Class::method}(){() → self::Class};
  } =>#t2;
  let final self::Class? #t3 = c in #t3 == null ?{self::Class?} null : block {
    self::Extension|extensionMethod(#t3{self::Class});
  } =>#t3;
  let final self::Class? #t4 = c in #t4 == null ?{self::Class?} null : block {
    self::Extension|extensionMethod(#t4{self::Class});
    self::Extension|extensionMethod(#t4{self::Class});
  } =>#t4;
}
