private String[] filterArgs(final String[] originalArgs, final OptionalModelId optionalModelId) { final ObjectList<String> filteredArgs = new ObjectArrayList<String>(); for (int i = 0; i < originalArgs.length; i++) { final String argumentName = originalArgs[i].replaceAll("--", ""); if (optionalModelId.columnIdentifier.equalsIgnoreCase( argumentName)) { // skip optional modelIds arguments as well. final int skipNumber = 1; LOGGER.info( "For optional modelId: " + optionalModelId.columnIdentifier + " Filtering out argument " + argumentName + " total args skipped: " + skipNumber); i += skipNumber; // skip argument name and 'skip' number of arguments. } if (optionalModelId.excludeArgumentNames.contains(argumentName)) { final int skipNumber = optionalModelId.skipValue(argumentName); LOGGER.info( "For optional modelId: " + optionalModelId.columnIdentifier + " Filtering out argument " + argumentName + " total args skipped: " + skipNumber); i += skipNumber; // skip argument name and 'skip' number of arguments. } else { LOGGER.debug("Adding argument to hashCode: " + originalArgs[i]); filteredArgs.add(originalArgs[i]); } if (i >= originalArgs.length) { break; } } // Hashcode will depend on argument order, so we sort them after filtering: Collections.sort(filteredArgs); return filteredArgs.toArray(new String[filteredArgs.size()]); }