public static void main(String[] args) {
        int numOfAttempts = 3;
        ProcessRunner<String, Failure1, Failure2> runner = new ProcessRunner<String, Failure1, Failure2>();
        for(int i = 0; i < numOfAttempts + 1; i++) {
            runner.add(new Processor1());
        }
        try {
            System.out.println(runner.processAll());
        } catch(Failure1 e) {
            System.out.println(e);
        } catch(Failure2 e) {
            System.out.println(e);
        }
        ProcessRunner<Integer, Failure1, Failure2> runner2 = new ProcessRunner<Integer, Failure1, Failure2>();
        for(int i = 0; i < numOfAttempts; i++) {
            runner2.add(new Processor2());
        }
        try {
            System.out.println(runner2.processAll());
        } catch(Failure1 e) {
            System.out.println(e);
        } catch(Failure2 e) {
            System.out.println(e);
        }
    }