private void run(Appendable appender) throws IOException { while (!mTodo.isEmpty()) { final Object next = mTodo.removeLast(); if (next instanceof Term) { ((Term) next).toStringHelper(mTodo); } else if (next instanceof Sort) { ((Sort) next).toStringHelper(mTodo); } else if (next instanceof Object[]) { final Object[] arr = (Object[]) next; mTodo.addLast(")"); for (int i = arr.length - 1; i >= 0; i--) { mTodo.addLast(arr[i]); if (i > 0) { mTodo.addLast(" "); } } appender.append('('); } else { appender.append(next.toString()); } } }