library test;
import self as self;
import "dart:core" as core;
import "infer_statics_with_method_invocations_a.dart" as inf;

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

class T extends core::Object {
  static final field self::T* foo = self::T::m1(self::T::m2(inf::m3("", "")));
  synthetic constructor •() → self::T*
    : super core::Object::•()
    ;
  static method m1(core::String* m) → self::T* {
    return null;
  }
  static method m2(dynamic e) → core::String* {
    return "";
  }
}
static method main() → dynamic {}

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

static method m3(core::String* a, core::String* b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
static method main() → dynamic {}

constants  {
  #C1 = null
}
