class FileAnnotateDelegator extends BaseDelegator implements IFileAnnotateDelegator {

    @Override
    public List<IFileAnnotation> getFileAnnotations(
            final List<IFileSpec> fileSpecs,
            @Nonnull final DiffType diffType,
            final boolean allResults,
            final boolean useChangeNumbers,
            final boolean followBranches)
            throws ConnectionException, RequestException, AccessException {

        throwRequestExceptionIfConditionFails(
                isNull(diffType) || diffType.isWsOption(),
                "Bad whitespace option in getFileAnnotations");

        try {
            GetFileAnnotationsOptions getFileAnnotationsOptions = new GetFileAnnotationsOptions()
                    .setAllResults(allResults)
                    .setUseChangeNumbers(useChangeNumbers)
                    .setFollowBranches(followBranches)
                    .setWsOpts(diffType);
            return getFileAnnotations(fileSpecs, getFileAnnotationsOptions);
        } catch (final ConnectionException | AccessException | RequestException exc) {
            throw exc;
        } catch (P4JavaException exc) {
            throw new RequestException(exc.getMessage(), exc);
        }
    }

    public  FileAnnotateDelegator(IOptionsServer server);

}