@Override
    public final Progress process(Processing processing) {
        int initialSize = processing.getDocumentOperations().size();
        for (DocumentOperation op : processing.getDocumentOperations()) {
            try {
                if (op instanceof DocumentPut) {
                    process((DocumentPut) op);
                } else if (op instanceof DocumentUpdate) {
                    process((DocumentUpdate) op);
                } else if (op instanceof DocumentRemove) {
                    process((DocumentRemove) op);
                }
            } catch (RuntimeException e) {
                if (log.isLoggable(Level.FINE) && initialSize != 1) {
                    log.log(Level.FINE,
                            "Processing of document failed, from processing.getDocumentOperations() containing " +
                            initialSize + " DocumentOperation(s).", e);
                }
                throw e;
            }
        }

        return Progress.DONE;
    }
Simple process() that follows the official guidelines for
looping over {@link DocumentOperation}s, and then calls the appropriate,
overloaded process() depending on the type of base.
<p>
Declared as final, so if you want to handle everything yourself
you should of course extend DocumentProcessor instead of
SimpleDocumentProcessor and just go about as usual.
<p>
It is important to note that when iterating over the {@link DocumentOperation}s in
{@link com.yahoo.docproc.Processing#getDocumentOperations()}, an exception thrown
from any of the process() methods provided by this class will be thrown straight
out of this here. This means that failing one document will fail the
entire batch.

@param processing the Processing to process.
@return Progress.DONE, unless a subclass decides to throw an exception
docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java