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

class C extends core::Object {
  static field core::bool* staticValue = self::o as{TypeError} core::bool*;
  field core::bool* instanceValue = self::o as{TypeError} core::bool*;
  synthetic constructor •() → self::C*
    : super core::Object::•()
    ;
}
static field core::Object* o = 1;
static field core::bool* topLevelValue = self::o as{TypeError} core::bool*;
static method main() → dynamic {
  try {
    self::topLevelValue;
    throw "no exception";
  }
  on core::TypeError* catch(no-exception-var) {
  }
  try {
    self::C::staticValue;
    throw "no exception";
  }
  on core::TypeError* catch(no-exception-var) {
  }
  try {
    new self::C::•();
    throw "no exception";
  }
  on core::TypeError* catch(no-exception-var) {
  }
}
