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

class C extends core::Object {
  field dynamic x = null;
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  method f() → void {}
}
static method test(self::C c) → void {
  c.{self::C::x};
  let final self::C #t1 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class 'C'.
 - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
  c. /*@error=UndefinedGetter*/ y;
                                ^";
  c.{self::C::f}();
  let final self::C #t2 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class 'C'.
 - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'g'.
  c. /*@error=UndefinedMethod*/ g();
                                ^";
  c.{self::C::x} = null;
  let final self::C #t3 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class 'C'.
 - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'y'.
  c. /*@error=UndefinedSetter*/ y = null;
                                ^";
}
static method main() → dynamic {}
