public abstract bool NumberEquals(LispNumber number);
public abstract LispNumber DivideInto(LispNumber dividend);
public abstract LispNumber Multiply(LispNumber factor);
public abstract int CompareTo(LispNumber number);
public abstract LispNumber DivideBy(LispNumber divisor);
public override LispNumber DivideInto(LispNumber dividend) { return dividend.DivideBy(this); }
public abstract LispNumber Add(LispNumber addend);
public override LispNumber DivideBy(LispNumber divisor) { return divisor.DivideInto(this); }
public override int CompareTo(LispNumber number) { return -number.CompareTo(this); }
public override LispNumber Add(LispNumber addend) { return addend.Add(this); }
public override bool NumberEquals(LispNumber number) { return number.NumberEquals(this); }
public override LispNumber Multiply(LispNumber factor) { return factor.Multiply(this); }