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

static method propertyGet(Never never) → dynamic {
  Never v1 = never{Never}.foo;
  Never v2 = never{Never}.hashCode;
  Never v3 = never{Never}.runtimeType;
  Never v4 = never{Never}.toString;
  Never v5 = never{Never}.noSuchMethod;
}
static method propertySet(Never never) → dynamic {
  core::int v1 = never{Never}.foo = 42;
}
static method methodInvocation(Never never, core::Invocation invocation) → dynamic {
  Never v1 = never{Never}.foo();
  Never v2 = never{Never}.hashCode();
  Never v3 = never{Never}.runtimeType();
  Never v4 = never{Never}.toString();
  Never v5 = never{Never}.toString(foo: 42);
  Never v6 = never{Never}.noSuchMethod(invocation);
  Never v7 = never{Never}.noSuchMethod(42);
}
static method equals(Never never) → dynamic {
  core::bool v1 = never == null;
  Never v2 = never =={core::Object::==}{(dynamic) → Never} never;
}
static method operator(Never never) → dynamic {
  Never v1 = never{Never}.+(never);
  Never v2 = never{Never}.unary-();
  Never v3 = never{Never}.[](never);
  Never v4 = let final Never #t1 = never in let final Never #t2 = never in let final Never #t3 = never in let final void #t4 = #t1{Never}.[]=(#t2, #t3) in #t3;
}
static method main() → dynamic {}
