library /*isNonNullableByDefault*/;
import self as self;

import "org-dartlang-testcase:///export_twice_lib1.dart";
import "org-dartlang-testcase:///export_twice_lib2.dart";

static method main() → dynamic
  ;

library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;

class Class extends core::Object {
  synthetic constructor •() → self2::Class
    ;
}
extension Extension on self2::Class {
  method method = self2::Extension|method;
  tearoff method = self2::Extension|get#method;
}
static method Extension|method(lowered final self2::Class #this) → dynamic
  ;
static method Extension|get#method(lowered final self2::Class #this) → () → dynamic
  return () → dynamic => self2::Extension|method(#this);

library /*isNonNullableByDefault*/;
import self as self3;
import "export_twice_lib1.dart" as self2;
additionalExports = (self2::Extension)

export "org-dartlang-testcase:///export_twice_lib1.dart" show Extension;
