library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

static method test(dynamic x) → void {
  if(x is{ForNonNullableByDefault} Never) {
    Never n1 = x{Never}{Never}.toString();
    Never n2 = x{Never}{Never}.runtimeType;
    Never n3 = x{Never}{Never}.someGetter;
    Never n4 = x{Never}{Never}.someMethod();
    Never n5 = x{Never}{Never}.+(x{Never});
    Never n6 = x{Never}{Never}.[](x{Never});
    Never n7 = x{Never}{Never}.call();
    Never n8 = x{Never}{Never}.runtimeType();
    Never n9 = x{Never}{Never}.toString;
    x{Never}{Never}.runtimeType = #C1;
    x{Never}{Never}.toString = () → core::String => "";
    Never v1 = x{Never}{Never}.toString();
    Never v2 = x{Never}{Never}.runtimeType;
    Never v3 = x{Never}{Never}.someGetter;
    Never v4 = x{Never}{Never}.someMethod();
    Never v5 = x{Never}{Never}.+(x{Never});
    Never v6 = x{Never}{Never}.[](x{Never});
    Never v7 = x{Never}{Never}.call();
    Never v8 = x{Never}{Never}.runtimeType();
    Never v9 = x{Never}{Never}.toString;
  }
}
static method main() → dynamic {
  self::test(null);
}

constants  {
  #C1 = TypeLiteralConstant(core::Object)
}
