David Galea
namespace Math2 { interface Number<T> { T add(T args); T subtract(T args); T multiply(T args); T divide(T args); } }
namespace Math2 { class ComplexNumber : Number<ComplexNumber> { } }
namespace Math2 { class ComplexNumber : Number<ComplexNumber> { public ComplexNumber add(ComplexNumber args) { return null; } public ComplexNumber subtract(ComplexNumber args) { return null; } public ComplexNumber multiply(ComplexNumber args) { return null; } public ComplexNumber divide(ComplexNumber args) { return null; } } }