class Complex {
  final double real;
  final double imaginary;
  const Complex(this.real, this.imaginary);
  Complex add(Complex other) { }
  Complex sub(Complex other) { }
  Complex negate() { }
  int get hashCode => real.hashCode * 13 + imaginary.hashCode * 19;
  bool operator ==(Object other) { }
  String toString() => 'Complex($real,$imaginary)';
}
extension Operators ;
on Complex (){ }
main() { }
implicit() { }
explicit() { }
void errors(Complex c) { }
expect(expected, actual) { }
