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

static method bar(core::int a, core::List<core::int?>? b) → dynamic {
  self::expect(1.{core::int::unary-}(){() → core::int}, a);
  self::expect(1.{core::int::unary-}(){() → core::int}, b!.{core::List::[]}(0){(core::int) → core::int?}!.{core::num::-}(2){(core::num) → core::int});
}
static method foo(core::int x) → dynamic async /* emittedValueType= dynamic */ 
  return self::bar(x.{core::num::-}(1){(core::num) → core::int}, !(x == null) ?{core::List<core::int?>?} core::_GrowableList::_literal3<core::int?>(x.{core::num::+}(1){(core::num) → core::int}, x.{core::num::+}(2){(core::num) → core::int}, await null /* runtimeCheckType= dart.async::Future<Null> */ ) : null);
static method main() → void async /* emittedValueType= void */ 
  return await self::foo(0) /* runtimeCheckType= dart.async::Future<dynamic> */ ;
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
    throw "Expected ${expected}, actual ${actual}";
}


Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue40662.dart:8:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue40662.dart:9:10 -> IntConstant(-1)
Extra constant evaluation: evaluated: 33, effectively constant: 2
