main = <No Member>;
library from "org-dartlang-test:///main.dart" as main {

  extension NumberParsing on dart.core::String* {
    method parseInt = main::NumberParsing|parseInt;
    tearoff parseInt = main::NumberParsing|get#parseInt;
  }
  static method NumberParsing|parseInt(lowered final dart.core::String* #this) → dart.core::int* {
    return dart.core::int::parse(#this);
  }
  static method NumberParsing|get#parseInt(lowered final dart.core::String* #this) → () →* dart.core::int*
    return () → dart.core::int* => main::NumberParsing|parseInt(#this);
}
