library test /*isNonNullableByDefault*/;
import self as self;
import "dart:async" as asy;
import "dart:core" as core;

import "dart:async";

static method test(asy::Future<core::int> base) → dynamic {
  asy::Future<core::bool> f = base.{asy::Future::then}<core::bool>((core::int x) → core::bool {
    return x =={core::num::==}{(core::Object) → core::bool} 0;
  }){((core::int) → FutureOr<core::bool>, {onError: core::Function?}) → asy::Future<core::bool>};
  asy::Future<core::bool> g = base.{asy::Future::then}<core::bool>((core::int x) → core::bool => x =={core::num::==}{(core::Object) → core::bool} 0){((core::int) → FutureOr<core::bool>, {onError: core::Function?}) → asy::Future<core::bool>};
  asy::Future<core::bool> b = f;
  b = g;
}
static method main() → dynamic {}
