Thanks @mmichalak.
There are actually other APIs that are also affected by this change (such as accessing entity properties), and the problem is that I in most cases you can’t identify the changes at compile time. For example:
final EntityPropertyService.PropertyResult propertyResult = issuePropertyService.getProperty(ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(), issue.getId(), propertyName, new EntityPropertyOptions.Builder().skipPermissionChecks().build());
final EntityProperty entityProperty = propertyResult.getEntityProperty().getOrNull();
This will throw an exception at runtime when compiled against Jira 7 and run on Jira 8 (or vice-versa), even though it will compile just fine without a change, because while there is no explicit reference (import) to either io.atlassian.fugue.Option or com.atlassian.fugue.Option, the compiled code will hold an internal reference to either one of them to call the getOrNull() method.
This is a nasty change that will require extensive testing of our apps.