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

import "org-dartlang-testcase:///mixin_from_opt_out_lib.dart";

abstract class _Class&Object&Mixin = core::Object with mix::Mixin /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Class&Object&Mixin
    : super core::Object::•()
    ;
}
class Class extends self::_Class&Object&Mixin {
  synthetic constructor •() → self::Class
    : super self::_Class&Object&Mixin::•()
    ;
}
static method main() → dynamic {
  core::print(new self::Class::•().{mix::Mixin::method}(null));
}

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

class Mixin extends core::Object {
  synthetic constructor •() → mix::Mixin*
    : super core::Object::•()
    ;
  method method(core::int* i) → core::int*
    return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
}
