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

class Operators extends core::Object {
  synthetic constructor •() → self::Operators
    : super core::Object::•()
    ;
  operator +(dynamic other) → dynamic
    return null;
  operator &(dynamic other) → dynamic
    return null;
  operator ~() → dynamic
    return null;
  operator |(dynamic other) → dynamic
    return null;
  operator ^(dynamic other) → dynamic
    return null;
  operator /(dynamic other) → dynamic
    return null;
  operator ==(core::Object other) → core::bool
    return true;
  operator >(dynamic other) → dynamic
    return null;
  operator >=(dynamic other) → dynamic
    return null;
  operator [](dynamic index) → dynamic
    return null;
  operator []=(dynamic index, dynamic value) → void {}
  operator <<(dynamic other) → dynamic
    return null;
  operator <(dynamic other) → dynamic
    return null;
  operator <=(dynamic other) → dynamic
    return null;
  operator *(dynamic other) → dynamic
    return null;
  operator %(dynamic other) → dynamic
    return null;
  operator >>(dynamic other) → dynamic
    return null;
  operator -(dynamic other) → dynamic
    return null;
  operator ~/(dynamic other) → dynamic
    return null;
  operator unary-() → dynamic
    return null;
}
static method main(dynamic arguments) → dynamic {
  self::Operators a = new self::Operators::•();
  self::Operators b = new self::Operators::•();
  a.{self::Operators::+}(b){(dynamic) → dynamic};
  a.{self::Operators::&}(b){(dynamic) → dynamic};
  a.{self::Operators::~}(){() → dynamic};
  a.{self::Operators::|}(b){(dynamic) → dynamic};
  a.{self::Operators::^}(b){(dynamic) → dynamic};
  a.{self::Operators::/}(b){(dynamic) → dynamic};
  a =={self::Operators::==}{(core::Object) → core::bool} b;
  a.{self::Operators::>}(b){(dynamic) → dynamic};
  a.{self::Operators::>=}(b){(dynamic) → dynamic};
  a.{self::Operators::[]}(0){(dynamic) → dynamic};
  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) → void};
  a.{self::Operators::<<}(b){(dynamic) → dynamic};
  a.{self::Operators::<}(b){(dynamic) → dynamic};
  a.{self::Operators::<=}(b){(dynamic) → dynamic};
  a.{self::Operators::*}(b){(dynamic) → dynamic};
  a.{self::Operators::%}(b){(dynamic) → dynamic};
  a.{self::Operators::>>}(b){(dynamic) → dynamic};
  a.{self::Operators::-}(b){(dynamic) → dynamic};
  a.{self::Operators::~/}(b){(dynamic) → dynamic};
  a.{self::Operators::unary-}(){() → dynamic};
}
