@@ -0,0 +1,715 @@
+package com.azabani.java.rover;%0A%0Aimport java.util.Stack;%0Aimport java.util.Iterator;%0A%0Apublic class RecursionCommand implements RoverCommand %7B%0A%09int listIndex; // non-negative%0A%09RoverListList program;%0A%09Stack%3CIterator%3CRoverCommand%3E%3E stack;%0A%09public RecursionCommand(int listIndex, RoverListList program,%0A%09%09Stack%3CIterator%3CRoverCommand%3E%3E stack)%0A%09%09throws IllegalArgumentException %7B%0A%09%09if (listIndex %3C 0)%0A%09%09%09throw new IllegalArgumentException(%0A%09%09%09%09%22listIndex must not be negative%22%0A%09%09%09);%0A%09%09this.listIndex = listIndex;%0A%09%09this.program = program;%0A%09%09this.stack = stack;%0A%09%7D%0A%09public void execute() %7B%0A%09%09stack.push(program.get(listIndex).iterator());%0A%09%7D%0A%09public String toString() %7B%0A%09%09return %22call:%22 + Integer.toString(listIndex);%0A%09%7D%0A%7D%0A

implement RecursionCommand (untested)