library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Getter not found: 'x'.
// var b = new B(/*error:UNDEFINED_IDENTIFIER*/ x); // allocations
//                                              ^
//
// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Getter not found: 'x'.
//   /*error:UNDEFINED_IDENTIFIER*/ x
//                                  ^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  field core::int* x;
  synthetic constructor •() → self::A*
    ;
  operator +(dynamic other) → self::B*
    ;
}
class B extends self::A {
  constructor •(dynamic ignore) → self::B*
    ;
}
static field self::A* a;
static field self::B* b;
static field core::List<dynamic>* c1;
static field core::List<dynamic>* c2;
static field core::Map<dynamic, dynamic>* d;
static field self::A* e;
static field core::int* f;
static field core::int* g;
static field self::B* h;
static field dynamic i;
static field self::B* j;
static method test1() → dynamic
  ;
static method main() → dynamic
  ;
