library;
import self as self;
import "typedef_from_opt_in_lib.dart" as typ;
import "dart:core" as core;

import "org-dartlang-testcase:///typedef_from_opt_in_lib.dart";

static method method1() → (typ::Request*) →* FutureOr<typ::Response*>*
  ;
static method method2() → (core::int*) →* core::int*
  ;
static method main() → dynamic
  ;

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

import "dart:async";

typedef Handler = (typ::Request) → FutureOr<typ::Response>;
typedef Typedef = (core::int?) → core::int;
class Request extends core::Object {
  synthetic constructor •() → typ::Request
    ;
}
class Response extends core::Object {
  synthetic constructor •() → typ::Response
    ;
}
