Move the implementation of the more specialized methods to the base class and let the platform implement only the most generic method that takes all the possible arguments. These specialized methods will then map to the generic implementation that must be provided by the platforms we support.