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

typedef Function2<S extends core::Object* = dynamic, T extends core::Object* = dynamic> = (S*) →* T*;
static method test() → void {
  {
    (core::int*) →* core::String* l0 = (core::int* x) → dynamic => null;
    (core::int*) →* core::String* l1 = (core::int* x) → dynamic => "hello";
    (core::int*) →* core::String* l2 = (core::String* x) → dynamic => "hello";
    (core::int*) →* core::String* l3 = (core::int* x) → dynamic => 3;
    (core::int*) →* core::String* l4 = (core::int* x) → dynamic {
      return 3;
    };
  }
  {
    (core::int*) →* core::String* l0 = (dynamic x) → dynamic => null;
    (core::int*) →* core::String* l1 = (dynamic x) → dynamic => "hello";
    (core::int*) →* core::String* l2 = (dynamic x) → dynamic => 3;
    (core::int*) →* core::String* l3 = (dynamic x) → dynamic {
      return 3;
    };
    (core::int*) →* core::String* l4 = (dynamic x) → dynamic {
      return x;
    };
  }
  {
    (core::int*) →* core::List<core::String*>* l0 = (core::int* x) → dynamic => null;
    (core::int*) →* core::List<core::String*>* l1 = (core::int* x) → dynamic => <dynamic>["hello"];
    (core::int*) →* core::List<core::String*>* l2 = (core::String* x) → dynamic => <dynamic>["hello"];
    (core::int*) →* core::List<core::String*>* l3 = (core::int* x) → dynamic => <dynamic>[3];
    (core::int*) →* core::List<core::String*>* l4 = (core::int* x) → dynamic {
      return <dynamic>[3];
    };
  }
  {
    (core::int*) →* core::int* l0 = (dynamic x) → dynamic => x;
    (core::int*) →* core::int* l1 = (dynamic x) → dynamic => x.+(1);
    (core::int*) →* core::String* l2 = (dynamic x) → dynamic => x;
    (core::int*) →* core::String* l3 = (dynamic x) → dynamic => x.substring(3);
    (core::String*) →* core::String* l4 = (dynamic x) → dynamic => x.substring(3);
  }
}
static method main() → dynamic {}
