List<AffectedModule> (List<AffectedModule> affectedModules, @NotNull Map<String, Map<String, BuildTargetState>> commitModulesState) { Set<AffectedModule> result = new HashSet<>(); affectedModules.forEach(affectedModule -> { if (affectedModule.getType().equals(JAVA_PRODUCTION)) { BuildTargetState targetState = commitModulesState.get(RESOURCES_PRODUCTION).get(affectedModule.getName()); if (targetState == null) { result.add(affectedModule); return; } String hash = calculateStringHash(affectedModule.getHash() + targetState.getHash()); result.add(new AffectedModule(PRODUCTION, affectedModule.getName(), hash, affectedModule.getOutPath())); } else if (affectedModule.getType().equals(RESOURCES_PRODUCTION)) { BuildTargetState targetState = commitModulesState.get(JAVA_PRODUCTION).get(affectedModule.getName()); if (targetState == null) { result.add(affectedModule); return; } String hash = calculateStringHash(targetState.getHash() + affectedModule.getHash()); result.add(new AffectedModule(PRODUCTION, affectedModule.getName(), hash, affectedModule.getOutPath())); } else if (affectedModule.getType().equals(JAVA_TEST)) { BuildTargetState targetState = commitModulesState.get(RESOURCES_TEST).get(affectedModule.getName()); if (targetState == null) { result.add(affectedModule); return; } String hash = calculateStringHash(affectedModule.getHash() + targetState.getHash()); result.add(new AffectedModule(TEST, affectedModule.getName(), hash, affectedModule.getOutPath())); } else if (affectedModule.getType().equals(RESOURCES_TEST)) { BuildTargetState targetState = commitModulesState.get(JAVA_TEST).get(affectedModule.getName()); if (targetState == null) { result.add(affectedModule); return; } String hash = calculateStringHash(targetState.getHash() + affectedModule.getHash()); result.add(new AffectedModule(TEST, affectedModule.getName(), hash, affectedModule.getOutPath())); } else { result.add(affectedModule); } }); return new ArrayList<>(result); }