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 = null, dynamic a2 = null]) → dynamic {}
static method main() → dynamic {}
