library;
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 ==(dynamic other) → core::bool*
    return null;
  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);
  a.{self::Operators::&}(b);
  a.{self::Operators::~}();
  a.{self::Operators::|}(b);
  a.{self::Operators::^}(b);
  a.{self::Operators::/}(b);
  a.{self::Operators::==}(b);
  a.{self::Operators::>}(b);
  a.{self::Operators::>=}(b);
  a.{self::Operators::[]}(0);
  a.{self::Operators::[]=}(0, b);
  a.{self::Operators::<<}(b);
  a.{self::Operators::<}(b);
  a.{self::Operators::<=}(b);
  a.{self::Operators::*}(b);
  a.{self::Operators::%}(b);
  a.{self::Operators::>>}(b);
  a.{self::Operators::-}(b);
  a.{self::Operators::~/}(b);
  a.{self::Operators::unary-}();
}
