API Backward Compatibility: Safe vs Breaking Changes