class CommandExecution {

    public static Map<String, String> getExecutionVariables(Map<String, String> variables, CommandExecution commandExecution) {
        Objects.requireNonNull(variables);
        Objects.requireNonNull(commandExecution);
        if (commandExecution.getOverloadedVariables() != null) {
            return ImmutableMap.<String, String>builder()
                    .putAll(variables)
                    .putAll(commandExecution.getOverloadedVariables())
                    .build();

        }
        return variables;
    }

    public  CommandExecution(Command command, int executionCount);
    public  CommandExecution(Command command, int executionCount, int priority);
    public  CommandExecution(Command command, int executionCount, int priority, Map<String, String> tags);
    public  CommandExecution(Command command, int executionCount, int priority, Map<String, String> tags, Map<String, String> overloadedVariables);

}