@Override
 /**
  * This implementation assumes that we are aborting all documents not yet flushed, as opposed to
  * needing to track specifically which documents have been added by this specific
  * DocConsumerPerThread. This appears to be consistent with lucene's expectations as of version
  * 3.3 but unfortunately I don't see any documentation on the interface's abort method that
  * specifies this as the desired behavior
  */
 void abort() {
   defaultDocConsumerPerThread.abort();
   geoIndexer.abort();
 }
  @Override
  DocWriter processDocument() throws IOException {
    // this is where we process the geo-search components of the document
    Document doc = docState.doc;
    int docID = docState.docID;

    List<Fieldable> fields = doc.getFields();
    List<GeoCoordinateField> geoFields = new Vector<GeoCoordinateField>();

    for (Fieldable field : fields) {
      if (field instanceof GeoCoordinateField) {
        geoFields.add((GeoCoordinateField) field);
      }
    }

    for (GeoCoordinateField geoField : geoFields) {
      // process field into GeoIndex here
      geoIndexer.index(docID, geoField);

      doc.removeFields(geoField.name());
    }

    return defaultDocConsumerPerThread.processDocument();
  }