class AbstractPolicyEventStrategy implements EventStrategy<T, Policy> {

    @Nullable
    @Override
    public Policy handle(final T event, @Nullable final Policy policy, final long revision) {
        if (null != policy) {
            PolicyBuilder policyBuilder = policy.toBuilder()
                    .setRevision(revision)
                    .setModified(event.getTimestamp().orElse(null));
            policyBuilder = applyEvent(event, policy, policyBuilder);
            return policyBuilder.build();
        }
        return null;
    }

    protected  AbstractPolicyEventStrategy();

}