public override int CompareTo(R2CircularDirection comparableInstance) { int result = 0; if (GetDirectionLength() < comparableInstance.GetDirectionLength()) { result = -1; } else if (GetDirectionLength() > comparableInstance.GetDirectionLength()) { result = 1; } else { if (GetDirectionDivisor() < comparableInstance.GetDirectionDivisor()) { result = -1; } else if (GetDirectionDivisor() > comparableInstance.GetDirectionDivisor()) { result = 1; } else { if (Direction < comparableInstance.Direction) { result = -1; } else if (Direction > comparableInstance.Direction) { result = 1; } else { result = StartingPoint.CompareTo(comparableInstance.StartingPoint); } } } return(result); }