@Override
    public boolean matches(Job localJob, Job storageProviderJob) {
        if (storageProviderJob.getVersion() == localJob.getVersion() + 1
                && localJob.hasState(PROCESSING) && !storageProviderJob.hasState(PROCESSING)) {
            return jobSteward.getThreadProcessingJob(localJob) == null;
        }
        return false;
    }
@Test
    void ifJobIsHavingConcurrentStateChangeAndStorageProviderJobHasNotAVersionOfPlus1ItWillNotMatch() {
        final Job localJob = aJobInProgress().withVersion(2).build();
        final Job storageProviderJob = aCopyOf(localJob).withVersion(5).withState(new SucceededState(ofMillis(10), ofMillis(6))).build();

        boolean matchesAllowedStateChange = allowedStateChange.matches(localJob, storageProviderJob);
        assertThat(matchesAllowedStateChange).isFalse();
    }