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

import "dart:async";

class Mixin extends core::Object {
  field FutureOr<Null>m = null;
  synthetic constructor •() → self::Mixin
    : super core::Object::•()
    ;
}
abstract class _Class&Object&Mixin = core::Object with self::Mixin /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_Class&Object&Mixin
    : super core::Object::•()
    ;
  mixin-super-stub get m() → FutureOr<Null>
    return super.{self::Mixin::m};
  mixin-super-stub set m(FutureOr<Null>value) → void
    return super.{self::Mixin::m} = value;
}
class Class extends self::_Class&Object&Mixin {
  synthetic constructor •() → self::Class
    : super self::_Class&Object&Mixin::•()
    ;
  method test(dynamic t1) → dynamic {
    this.{self::_Class&Object&Mixin::m} = t1 as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<Null>;
  }
}
static method main() → dynamic {}
