OPENNLP-1106: Make it compile with 1.6.0, update java to 8 and checkstyle fixes
diff --git a/opennlp-coref/pom.xml b/opennlp-coref/pom.xml
index 8c5d89e..033ffc2 100644
--- a/opennlp-coref/pom.xml
+++ b/opennlp-coref/pom.xml
@@ -30,7 +30,7 @@
 	</parent>
 
 	<artifactId>opennlp-coref</artifactId>
-	<version>1.5.4-SNAPSHOT</version>
+	<version>1.6.0-SNAPSHOT</version>
 	<packaging>jar</packaging>
 	<name>Apache OpenNLP Coreferencer</name>
 
@@ -38,7 +38,7 @@
 		<dependency>
 			<groupId>org.apache.opennlp</groupId>
 			<artifactId>opennlp-tools</artifactId>
-			<version>1.5.3</version>
+			<version>1.6.0</version>
 			<scope>compile</scope>
 		</dependency>
 
@@ -69,23 +69,11 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.8</source>
+					<target>1.8</target>
 					<compilerArgument>-Xlint</compilerArgument>
 				</configuration>
 			</plugin>
-            
-           		<plugin>
-				<artifactId>maven-javadoc-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>create-javadoc-jar</id>
-						<configuration>
-							<excludePackageNames>opennlp.tools.cmdline</excludePackageNames>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
 		</plugins>
 	</build>
 </project>
diff --git a/opennlp-coref/src/main/java/opennlp/tools/cmdline/coref/CoreferencerTool.java b/opennlp-coref/src/main/java/opennlp/tools/cmdline/coref/CoreferencerTool.java
index 94648de..885951c 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/cmdline/coref/CoreferencerTool.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/cmdline/coref/CoreferencerTool.java
@@ -53,19 +53,19 @@
     public CorefParse(List<Parse> parses, DiscourseEntity[] entities) {
       this.parses = parses;
       parseMap = new HashMap<Parse, Integer>();
-      for (int ei=0,en=entities.length;ei<en;ei++) {
+      for (int ei = 0, en = entities.length; ei < en;ei++) {
         if (entities[ei].getNumMentions() > 1) {
           for (Iterator<MentionContext> mi = entities[ei].getMentions(); mi.hasNext();) {
             MentionContext mc = mi.next();
             Parse mentionParse = ((DefaultParse) mc.getParse()).getParse();
-            parseMap.put(mentionParse,ei+1);
+            parseMap.put(mentionParse,ei + 1);
           }
         }
       }
     }
 
     public void show() {
-      for (int pi=0,pn=parses.size();pi<pn;pi++) {
+      for (int pi = 0, pn = parses.size(); pi < pn;pi++) {
         Parse p = parses.get(pi);
         show(p);
         System.out.println();
@@ -79,13 +79,13 @@
         System.out.print("(");
         System.out.print(p.getType());
         if (parseMap.containsKey(p)) {
-          System.out.print("#"+parseMap.get(p));
+          System.out.print("#" + parseMap.get(p));
         }
         //System.out.print(p.hashCode()+"-"+parseMap.containsKey(p));
         System.out.print(" ");
       }
       Parse[] children = p.getChildren();
-      for (int pi=0,pn=children.length;pi<pn;pi++) {
+      for (int pi = 0, pn = children.length; pi < pn;pi++) {
         Parse c = children[pi];
         Span s = c.getSpan();
         if (start < s.getStart()) {
@@ -134,19 +134,21 @@
         while ((line = lineStream.read()) != null) {
 
           if (line.equals("")) {
-            DiscourseEntity[] entities = treebankLinker.getEntities(document.toArray(new Mention[document.size()]));
+            DiscourseEntity[] entities =
+                treebankLinker.getEntities(document.toArray(new Mention[document.size()]));
             //showEntities(entities);
             new CorefParse(parses,entities).show();
-            sentenceNumber=0;
+            sentenceNumber = 0;
             document.clear();
             parses.clear();
           }
           else {
             Parse p = Parse.parseParse(line);
             parses.add(p);
-            Mention[] extents = treebankLinker.getMentionFinder().getMentions(new DefaultParse(p,sentenceNumber));
+            Mention[] extents =
+                treebankLinker.getMentionFinder().getMentions(new DefaultParse(p,sentenceNumber));
             //construct new parses for mentions which don't have constituents.
-            for (int ei=0,en=extents.length;ei<en;ei++) {
+            for (int ei = 0, en = extents.length; ei < en;ei++) {
               //System.err.println("PennTreebankLiner.main: "+ei+" "+extents[ei]);
 
               if (extents[ei].getParse() == null) {
diff --git a/opennlp-coref/src/main/java/opennlp/tools/cmdline/coref/CoreferencerTrainerTool.java b/opennlp-coref/src/main/java/opennlp/tools/cmdline/coref/CoreferencerTrainerTool.java
index 4a84073..2549c32 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/cmdline/coref/CoreferencerTrainerTool.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/cmdline/coref/CoreferencerTrainerTool.java
@@ -21,8 +21,8 @@
 
 import opennlp.tools.cmdline.AbstractTrainerTool;
 import opennlp.tools.cmdline.TerminateToolException;
-import opennlp.tools.cmdline.params.TrainingToolParams;
 import opennlp.tools.cmdline.coref.CoreferencerTrainerTool.TrainerToolParams;
+import opennlp.tools.cmdline.params.TrainingToolParams;
 import opennlp.tools.coref.CorefSample;
 import opennlp.tools.coref.CorefTrainer;
 
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/AbstractLinker.java b/opennlp-coref/src/main/java/opennlp/tools/coref/AbstractLinker.java
index 184718c..38af1f7 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/AbstractLinker.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/AbstractLinker.java
@@ -97,7 +97,9 @@
   }
 
   /**
-   * Resolves the specified mention to an entity in the specified discourse model or creates a new entity for the mention.
+   * Resolves the specified mention to an entity in the specified discourse model
+   * or creates a new entity for the mention.
+   *
    * @param mention The mention to resolve.
    * @param discourseModel The discourse model of existing entities.
    */
@@ -114,7 +116,7 @@
         }
         else if (mode == LinkerMode.TRAIN) {
           entities[ri] = resolvers[ri].retain(mention, discourseModel);
-          if (ri+1 != resolvers.length) {
+          if (ri + 1 != resolvers.length) {
             canResolve = true;
           }
         }
@@ -135,7 +137,8 @@
       }
     }
     if (!canResolve && removeUnresolvedMentions) {
-      //System.err.println("No resolver for: "+econtext.toText()+ " head="+econtext.headTokenText+" "+econtext.headTokenTag);
+      //System.err.println("No resolver for: "+econtext.toText()
+      //    + " head="+econtext.headTokenText+" "+econtext.headTokenTag);
       validEntity = false;
     }
     DiscourseEntity de = checkForMerges(discourseModel, entities);
@@ -155,7 +158,8 @@
    * @param entity The entity which is mentioned by the specified mention.
    * @param useDiscourseModel Whether the mentions should be kept as an entiy or simply co-indexed.
    */
-  protected void updateExtent(DiscourseModel dm, MentionContext mention, DiscourseEntity entity, boolean useDiscourseModel) {
+  protected void updateExtent(DiscourseModel dm, MentionContext mention, DiscourseEntity entity,
+                              boolean useDiscourseModel) {
     if (useDiscourseModel) {
       if (entity != null) {
         //System.err.println("AbstractLinker.updateExtent: addingExtent:
@@ -174,18 +178,21 @@
       else {
         //System.err.println("AbstractLinker.updateExtent: creatingExtent:
         // "+econtext.toText()+" "+econtext.gender+" "+econtext.number);
-        entity = new DiscourseEntity(mention, mention.getGender(), mention.getGenderProb(), mention.getNumber(), mention.getNumberProb());
+        entity = new DiscourseEntity(mention, mention.getGender(), mention.getGenderProb(),
+            mention.getNumber(), mention.getNumberProb());
         dm.addEntity(entity);
       }
     }
     else {
       if (entity != null) {
-        DiscourseEntity newEntity = new DiscourseEntity(mention, mention.getGender(), mention.getGenderProb(), mention.getNumber(), mention.getNumberProb());
+        DiscourseEntity newEntity = new DiscourseEntity(mention, mention.getGender(),
+            mention.getGenderProb(), mention.getNumber(), mention.getNumberProb());
         dm.addEntity(newEntity);
         newEntity.setId(entity.getId());
       }
       else {
-        DiscourseEntity newEntity = new DiscourseEntity(mention, mention.getGender(), mention.getGenderProb(), mention.getNumber(), mention.getNumberProb());
+        DiscourseEntity newEntity = new DiscourseEntity(mention, mention.getGender(),
+            mention.getGenderProb(), mention.getNumber(), mention.getNumberProb());
         dm.addEntity(newEntity);
       }
     }
@@ -235,30 +242,33 @@
   }
 
   public MentionContext[] constructMentionContexts(Mention[] mentions) {
-    int mentionInSentenceIndex=-1;
-    int numMentionsInSentence=-1;
+    int mentionInSentenceIndex = -1;
+    int numMentionsInSentence = -1;
     int prevSentenceIndex = -1;
     MentionContext[] contexts = new MentionContext[mentions.length];
-    for (int mi=0,mn=mentions.length;mi<mn;mi++) {
+    for (int mi = 0,mn = mentions.length;mi < mn; mi++) {
       Parse mentionParse = mentions[mi].getParse();
       //System.err.println("AbstractLinker.constructMentionContexts: mentionParse="+mentionParse);
       if (mentionParse == null) {
-        System.err.println("no parse for "+mentions[mi]);
+        System.err.println("no parse for " + mentions[mi]);
       }
       int sentenceIndex = mentionParse.getSentenceNumber();
       if (sentenceIndex != prevSentenceIndex) {
-        mentionInSentenceIndex=0;
+        mentionInSentenceIndex = 0;
         prevSentenceIndex = sentenceIndex;
         numMentionsInSentence = 0;
-        for (int msi=mi;msi<mentions.length;msi++) {
+        for (int msi = mi; msi < mentions.length; msi++) {
           if (sentenceIndex != mentions[msi].getParse().getSentenceNumber()) {
             break;
           }
           numMentionsInSentence++;
         }
       }
-      contexts[mi]=new MentionContext(mentions[mi], mentionInSentenceIndex, numMentionsInSentence, mi, sentenceIndex, getHeadFinder());
-      //System.err.println("AbstractLinker.constructMentionContexts: mi="+mi+" sn="+mentionParse.getSentenceNumber()+" extent="+mentions[mi]+" parse="+mentionParse.getSpan()+" mc="+contexts[mi].toText());
+      contexts[mi] = new MentionContext(mentions[mi], mentionInSentenceIndex,
+          numMentionsInSentence, mi, sentenceIndex, getHeadFinder());
+      //System.err.println("AbstractLinker.constructMentionContexts: mi="+mi
+      // +" sn="+mentionParse.getSentenceNumber()+" extent="+mentions[mi]+" parse="
+      // +mentionParse.getSpan()+" mc="+contexts[mi].toText());
       contexts[mi].setId(mentions[mi].getId());
       mentionInSentenceIndex++;
       if (mode != LinkerMode.SIM) {
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/CorefModel.java b/opennlp-coref/src/main/java/opennlp/tools/coref/CorefModel.java
index d74e037..50adcbc 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/CorefModel.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/CorefModel.java
@@ -15,7 +15,6 @@
  * limitations under the License.
  */
 
-
 package opennlp.tools.coref;
 
 import java.io.BufferedReader;
@@ -26,11 +25,10 @@
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.zip.GZIPInputStream;
-import opennlp.tools.ml.maxent.io.BinaryGISModelReader;
-//import opennlp.maxent.io.BinaryGISModelReader;
-//import opennlp.model.AbstractModel;
-import opennlp.tools.ml.model.AbstractModel;
+
 import opennlp.tools.dictionary.Dictionary;
+import opennlp.tools.ml.maxent.io.BinaryGISModelReader;
+import opennlp.tools.ml.model.AbstractModel;
 import opennlp.tools.util.StringList;
 import opennlp.tools.util.model.BaseModel;
 
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/CorefTrainer.java b/opennlp-coref/src/main/java/opennlp/tools/coref/CorefTrainer.java
index 9d6ec8c..3eb9dc3 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/CorefTrainer.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/CorefTrainer.java
@@ -53,9 +53,9 @@
 
       Parse p = ((DefaultParse) corefParse).getParse();
       
-      Mention extents[] = mentionFinder.getMentions(corefParse);
+      Mention[] extents = mentionFinder.getMentions(corefParse);
       
-      for (int ei = 0, en = extents.length; ei < en;ei++) {
+      for (int ei = 0, en = extents.length; ei < en; ei++) {
 
         if (extents[ei].getParse() == null) {
 
@@ -117,7 +117,7 @@
     genTrain.trainModel();
     numTrain.trainModel();
     
-    MaxentResolver.setSimilarityModel(SimilarityModel.testModel(modelDirectory + "/coref"+"/sim"));
+    MaxentResolver.setSimilarityModel(SimilarityModel.testModel(modelDirectory + "/coref" + "/sim"));
     
     // Done with similarity training
     
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/DefaultLinker.java b/opennlp-coref/src/main/java/opennlp/tools/coref/DefaultLinker.java
index 74ebbfc..1869a12 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/DefaultLinker.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/DefaultLinker.java
@@ -62,27 +62,32 @@
   }
 
   /**
-   * Creates a new linker with the specified model directory, running in the specified mode which uses a discourse model
+   * Creates a new linker with the specified model directory,
+   * running in the specified mode which uses a discourse model
    * based on the specified parameter.
    * @param modelDirectory The directory where the models for this linker are kept.
    * @param mode The mode that this linker is running in.
    * @param useDiscourseModel Whether the model should use a discourse model or not.
    * @throws IOException when the models can not be read or written to based on the mode.
    */
-  public DefaultLinker(String modelDirectory, LinkerMode mode, boolean useDiscourseModel) throws IOException {
+  public DefaultLinker(String modelDirectory, LinkerMode mode, boolean useDiscourseModel)
+      throws IOException {
     this(modelDirectory,mode,useDiscourseModel,-1);
   }
 
   /**
-   * Creates a new linker with the specified model directory, running in the specified mode which uses a discourse model
+   * Creates a new linker with the specified model directory,
+   * running in the specified mode which uses a discourse model
    * based on the specified parameter and uses the specified fixed non-referential probability.
    * @param modelDirectory The directory where the models for this linker are kept.
    * @param mode The mode that this linker is running in.
    * @param useDiscourseModel Whether the model should use a discourse model or not.
-   * @param fixedNonReferentialProbability The probability which resolvers are required to exceed to positi a coreference relationship.
+   * @param fixedNonReferentialProbability The probability which resolvers are
+   *                                       required to exceed to positi a coreference relationship.
    * @throws IOException when the models can not be read or written to based on the mode.
    */
-  public DefaultLinker(String modelDirectory, LinkerMode mode, boolean useDiscourseModel, double fixedNonReferentialProbability) throws IOException {
+  public DefaultLinker(String modelDirectory, LinkerMode mode, boolean useDiscourseModel,
+                       double fixedNonReferentialProbability) throws IOException {
     super(modelDirectory, mode, useDiscourseModel);
     if (mode != LinkerMode.SIM) {
       mcm = new MaxentCompatibilityModel(corefProject);
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseElement.java b/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseElement.java
index 9336fad..9d4b533 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseElement.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseElement.java
@@ -33,7 +33,7 @@
 public abstract class DiscourseElement {
 
   private List<MentionContext> extents;
-  private int id=-1;
+  private int id = -1;
   private MentionContext lastExtent;
 
   /**
@@ -48,11 +48,12 @@
   }
 
   /**
-   * Returns an iterator over the mentions which iterates through them based on which were most recently mentioned.
+   * Returns an iterator over the mentions which iterates through them
+   * based on which were most recently mentioned.
    * @return the {@link Iterator}.
    */
   public Iterator<MentionContext> getRecentMentions() {
-    return(new ReverseListIterator<MentionContext>(extents));
+    return new ReverseListIterator<MentionContext>(extents);
   }
 
   /**
@@ -62,7 +63,7 @@
    * @return the {@link Iterator}
    */
   public Iterator<MentionContext> getMentions() {
-    return(extents.listIterator());
+    return extents.listIterator();
   }
 
   /**
@@ -71,7 +72,7 @@
    * @return number of mentions
    */
   public int getNumMentions() {
-    return(extents.size());
+    return extents.size();
   }
 
   /**
@@ -80,7 +81,7 @@
    */
   public void addMention(MentionContext mention) {
     extents.add(mention);
-    lastExtent=mention;
+    lastExtent = mention;
   }
 
   /**
@@ -89,7 +90,7 @@
    * @return the last mention for this element.
    */
   public MentionContext getLastExtent() {
-    return(lastExtent);
+    return lastExtent;
   }
 
   /**
@@ -97,7 +98,7 @@
    * @param id The id.
    */
   public void setId(int id) {
-    this.id=id;
+    this.id = id;
   }
 
   /**
@@ -106,7 +107,7 @@
    * @return the id associated with this element.
    */
   public int getId() {
-    return(id);
+    return id;
   }
 
   @Override
@@ -120,6 +121,6 @@
       de.append(", ").append(ex.toText());//.append("<").append(ex.getHeadText()).append(">");
     }
     de.append(" ]");
-    return(de.toString());
+    return de.toString();
   }
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseEntity.java b/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseEntity.java
index f92a883..9b8f794 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseEntity.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseEntity.java
@@ -41,7 +41,8 @@
    * @param number The number for this entity.
    * @param numberProb The probability that the specified number is correct.
    */
-  public DiscourseEntity(MentionContext mention, GenderEnum gender, double genderProb, NumberEnum number, double numberProb) {
+  public DiscourseEntity(MentionContext mention, GenderEnum gender, double genderProb,
+                         NumberEnum number, double numberProb) {
     super(mention);
     this.gender = gender;
     this.genderProb = genderProb;
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseModel.java b/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseModel.java
index f0552a7..b7bd1e0 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseModel.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/DiscourseModel.java
@@ -49,7 +49,7 @@
       entities.add(0,e);
     }
     else {
-      System.err.println("DiscourseModel.mentionEntity: failed to remove "+e);
+      System.err.println("DiscourseModel.mentionEntity: failed to remove " + e);
     }
   }
 
@@ -91,7 +91,7 @@
    * @param confidence The confidence.
    */
   public void mergeEntities(DiscourseEntity e1,DiscourseEntity e2,float confidence) {
-    for (Iterator<MentionContext> ei=e2.getMentions();ei.hasNext();) {
+    for (Iterator<MentionContext> ei = e2.getMentions(); ei.hasNext();) {
       e1.addMention(ei.next());
     }
     //System.err.println("DiscourseModel.mergeEntities: removing "+e2);
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/Linker.java b/opennlp-coref/src/main/java/opennlp/tools/coref/Linker.java
index 8e0c249..263b1b1 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/Linker.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/Linker.java
@@ -83,7 +83,9 @@
   public DiscourseEntity[] getEntities(Mention[] mentions);
 
   /**
-   * Creates mention contexts for the specified mention exents.  These are used to compute coreference features over.
+   * Creates mention contexts for the specified mention exents.
+   * These are used to compute coreference features over.
+   *
    * @param mentions The mention of a document.
    * 
    * @return mention contexts for the specified mention exents.
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/TreebankLinker.java b/opennlp-coref/src/main/java/opennlp/tools/coref/TreebankLinker.java
index db265e7..2850faf 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/TreebankLinker.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/TreebankLinker.java
@@ -40,7 +40,8 @@
     super(project,mode,useDiscourseModel);
   }
 
-  public TreebankLinker(String project, LinkerMode mode, boolean useDiscourseModel, double fixedNonReferentialProbability) throws IOException {
+  public TreebankLinker(String project, LinkerMode mode, boolean useDiscourseModel,
+                        double fixedNonReferentialProbability) throws IOException {
     super(project,mode,useDiscourseModel,fixedNonReferentialProbability);
   }
 
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/AbstractMentionFinder.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/AbstractMentionFinder.java
index 4bf28a2..8d50266 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/AbstractMentionFinder.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/AbstractMentionFinder.java
@@ -92,7 +92,8 @@
       Parse child0 = parts.get(0);
       Parse child1 = parts.get(1);
       Parse child2 = parts.get(2);
-      if (child1.isToken() && child1.getSyntacticType().equals("POS") && child0.isNounPhrase() && child2.isNounPhrase()) {
+      if (child1.isToken() && child1.getSyntacticType().equals("POS")
+          && child0.isNounPhrase() && child2.isNounPhrase()) {
         return true;
       }
     }
@@ -155,10 +156,12 @@
       if ((tokStr.equals("and") || tokStr.equals("or")) && !isPartOfName(tok)) {
         if (lastNpTokenIndex != ti) {
           if (ti - 1 >= 0 && (npTokens.get(ti - 1)).getSyntacticType().startsWith("NN")) {
-            Span npSpan = new Span((npTokens.get(ti + 1)).getSpan().getStart(), (npTokens.get(lastNpTokenIndex)).getSpan().getEnd());
+            Span npSpan = new Span((npTokens.get(ti + 1)).getSpan().getStart(),
+                npTokens.get(lastNpTokenIndex).getSpan().getEnd());
             Mention snpExtent = new Mention(npSpan, npSpan, tok.getEntityId(), null,"CNP");
             entities.add(snpExtent);
-            //System.err.println("adding extent for conjunction in: "+np+" preeceeded by "+((Parse) npTokens.get(ti-1)).getSyntacticType());
+            //System.err.println("adding extent for conjunction in: "+np+" preeceeded by "
+            // +((Parse) npTokens.get(ti-1)).getSyntacticType());
             inCoordinatedNounPhrase = true;
           }
           else {
@@ -169,7 +172,8 @@
       }
       else if (inCoordinatedNounPhrase && tokStr.equals(",")) {
         if (lastNpTokenIndex != ti) {
-          Span npSpan = new Span((npTokens.get(ti + 1)).getSpan().getStart(), (npTokens.get(lastNpTokenIndex)).getSpan().getEnd());
+          Span npSpan = new Span((npTokens.get(ti + 1)).getSpan().getStart(),
+              npTokens.get(lastNpTokenIndex).getSpan().getEnd());
           Mention snpExtent = new Mention(npSpan, npSpan, tok.getEntityId(), null,"CNP");
           entities.add(snpExtent);
           //System.err.println("adding extent for comma in: "+np);
@@ -177,7 +181,8 @@
         lastNpTokenIndex = ti - 1;
       }
       else if (inCoordinatedNounPhrase && ti == 0 && lastNpTokenIndex >= 0) {
-        Span npSpan = new Span((npTokens.get(ti)).getSpan().getStart(), (npTokens.get(lastNpTokenIndex)).getSpan().getEnd());
+        Span npSpan = new Span((npTokens.get(ti)).getSpan().getStart(),
+            npTokens.get(lastNpTokenIndex).getSpan().getEnd());
         Mention snpExtent = new Mention(npSpan, npSpan, tok.getEntityId(), null,"CNP");
         entities.add(snpExtent);
         //System.err.println("adding extent for start coord in: "+np);
@@ -192,14 +197,16 @@
   }
 
   private void collectPossesivePronouns(Parse np, List<Mention> entities) {
-    //TODO: Look at how training is done and examine whether this is needed or can be accomidated in a different way.
+    //TODO: Look at how training is done and examine whether this is
+    // needed or can be accomidated in a different way.
     /*
     List snps = np.getSubNounPhrases();
     if (snps.size() != 0) {
       //System.err.println("AbstractMentionFinder: Found existing snps");
       for (int si = 0, sl = snps.size(); si < sl; si++) {
         Parse snp = (Parse) snps.get(si);
-        Extent ppExtent = new Extent(snp.getSpan(), snp.getSpan(), snp.getEntityId(), null,Linker.PRONOUN_MODIFIER);
+        Extent ppExtent = new Extent(snp.getSpan(), snp.getSpan(), snp.getEntityId(),
+            null,Linker.PRONOUN_MODIFIER);
         entities.add(ppExtent);
       }
     }
@@ -214,8 +221,10 @@
           continue;
         }
         if (tok.getSyntacticType().startsWith("PRP") && handledPronoun(tok.toString())) {
-          Mention ppExtent = new Mention(tok.getSpan(), tok.getSpan(), tok.getEntityId(), null,Linker.PRONOUN_MODIFIER);
-          //System.err.println("AbstractEntityFinder.collectPossesivePronouns: adding possesive pronoun: "+tok+" "+tok.getEntityId());
+          Mention ppExtent = new Mention(tok.getSpan(), tok.getSpan(),
+              tok.getEntityId(), null,Linker.PRONOUN_MODIFIER);
+          //System.err.println("AbstractEntityFinder.collectPossesivePronouns: adding possesive pronoun: "
+          //    +tok+" "+tok.getEntityId());
           entities.add(ppExtent);
           //System.err.println("AbstractMentionFinder: adding pos-pro: "+ppExtent);
           break;
@@ -240,7 +249,7 @@
   private boolean isHeadOfExistingMention(Parse np, Map<Parse, Parse> headMap,
       Set<Parse> mentions) {
     Parse head = headMap.get(np);
-    while(head != null){
+    while (head != null) {
       if (mentions.contains(head)) {
         return true;
       }
@@ -251,8 +260,8 @@
 
 
   private void clearMentions(Set<Parse> mentions, Parse np) {
-    Span npSpan =np.getSpan();
-    for(Iterator<Parse> mi=mentions.iterator();mi.hasNext();) {
+    Span npSpan = np.getSpan();
+    for (Iterator<Parse> mi = mentions.iterator(); mi.hasNext();) {
       Parse mention = mi.next();
       if (!mention.getSpan().contains(npSpan)) {
         //System.err.println("clearing "+mention+" for "+np);
@@ -267,7 +276,8 @@
     //System.err.println("AbtractMentionFinder.collectMentions: "+headMap);
     for (int npi = 0, npl = nps.size(); npi < npl; npi++) {
       Parse np = nps.get(npi);
-      //System.err.println("AbstractMentionFinder: collectMentions: np[" + npi + "]=" + np + " head=" + headMap.get(np));
+      //System.err.println("AbstractMentionFinder: collectMentions: np[" + npi + "]="
+      //    + np + " head=" + headMap.get(np));
       if (!isHeadOfExistingMention(np,headMap, recentMentions)) {
         clearMentions(recentMentions, np);
         if (!isPartOfName(np)) {
@@ -283,11 +293,13 @@
           }
         }
         else {
-          //System.err.println("AbstractMentionFinder.collectMentions excluding np as part of name. np=" + np);
+          //System.err.println(
+          //    "AbstractMentionFinder.collectMentions excluding np as part of name. np=" + np);
         }
       }
-   	  else {
-        //System.err.println("AbstractMentionFinder.collectMentions excluding np as head of previous mention. np=" + np);
+      else {
+        //System.err.println(
+        //    "AbstractMentionFinder.collectMentions excluding np as head of previous mention. np=" + np);
       }
       if (isBasalNounPhrase(np)) {
         if (collectPrenominalNamedEntities) {
@@ -325,7 +337,8 @@
 //          mentions.add(extent);
 //        }
 //        else {
-//          System.err.println("AbstractMentionFinder.addPossesiveMentions: odd parse structure: "+possesiveNounPhrase);
+//          System.err.println("AbstractMentionFinder.addPossesiveMentions: odd parse structure: "
+//              +possesiveNounPhrase);
 //        }
 //      }
 //    }
@@ -401,7 +414,8 @@
     List<Parse> nps = p.getNounPhrases();
     Collections.sort(nps);
     Map<Parse, Parse> headMap = constructHeadMap(nps);
-    //System.err.println("AbstractMentionFinder.getMentions: got " + nps.size()); // + " nps, and " + nes.size() + " named entities");
+    //System.err.println("AbstractMentionFinder.getMentions: got " + nps.size()); // + " nps, and "
+    // + nes.size() + " named entities");
     Mention[] mentions = collectMentions(nps, headMap);
     return mentions;
   }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/AbstractParse.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/AbstractParse.java
index b9fcfd3..71b9bb1 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/AbstractParse.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/AbstractParse.java
@@ -41,10 +41,10 @@
 
   public List<Parse> getNounPhrases() {
     List<Parse> parts = getSyntacticChildren();
-    List<Parse> nps = new ArrayList<Parse>();
+    List<Parse> nps = new ArrayList<>();
     while (parts.size() > 0) {
-      List<Parse> newParts = new ArrayList<Parse>();
-      for (int pi=0,pn=parts.size();pi<pn;pi++) {
+      List<Parse> newParts = new ArrayList<>();
+      for (int pi = 0, pn = parts.size(); pi < pn;pi++) {
         //System.err.println("AbstractParse.getNounPhrases "+parts.get(pi).getClass());
         Parse cp = parts.get(pi);
         if (cp.isNounPhrase()) {
@@ -58,4 +58,4 @@
     }
     return nps;
   }
- }
+}
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/DefaultParse.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/DefaultParse.java
index e096b7b..4d3d1a1 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/DefaultParse.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/DefaultParse.java
@@ -30,12 +30,14 @@
 import opennlp.tools.util.Span;
 
 /**
- * This class is a wrapper for {@link opennlp.tools.parser.Parse} mapping it to the API specified in {@link opennlp.tools.coref.mention.Parse}.
- *  This allows coreference to be done on the output of the parser.
+ * This class is a wrapper for {@link opennlp.tools.parser.Parse} mapping
+ * it to the API specified in {@link opennlp.tools.coref.mention.Parse}.
+ * This allows coreference to be done on the output of the parser.
  */
 public class DefaultParse extends AbstractParse {
 
-  public static String[] NAME_TYPES = {"person", "organization", "location", "date", "time", "percentage", "money"};
+  public static String[] NAME_TYPES = {"person", "organization", "location", "date",
+      "time", "percentage", "money"};
   
   private Parse parse;
   private int sentenceNumber;
@@ -118,10 +120,9 @@
   }
 
   private List<opennlp.tools.coref.mention.Parse> createParses(Parse[] parses) {
-    List<opennlp.tools.coref.mention.Parse> newParses =
-      new ArrayList<opennlp.tools.coref.mention.Parse>(parses.length);
+    List<opennlp.tools.coref.mention.Parse> newParses = new ArrayList<>(parses.length);
 
-    for (int pi=0,pn=parses.length;pi<pn;pi++) {
+    for (int pi = 0, pn = parses.length; pi < pn;pi++) {
       newParses.add(new DefaultParse(parses[pi],sentenceNumber));
     }
 
@@ -139,7 +140,7 @@
 
   public boolean isParentNAC() {
     Parse parent = parse.getParent();
-    while(parent != null) {
+    while (parent != null) {
       if (parent.getType().equals("NAC")) {
         return true;
       }
@@ -228,7 +229,7 @@
         // get parent and update distance
         // if match return distance
         // if not match do it again
-        }
+      }
       
       return parse.getSpan().compareTo(p.getSpan());
     }
@@ -243,10 +244,10 @@
   public opennlp.tools.coref.mention.Parse getPreviousToken() {
     Parse parent = parse.getParent();
     Parse node = parse;
-    int index=-1;
+    int index = -1;
     //find parent with previous children
-    while(parent != null && index < 0) {
-      index = parent.indexOf(node)-1;
+    while (parent != null && index < 0) {
+      index = parent.indexOf(node) - 1;
       if (index < 0) {
         node = parent;
         parent = parent.getParent();
@@ -260,7 +261,7 @@
       Parse p = parent.getChildren()[index];
       while (!p.isPosTag()) {
         Parse[] kids = p.getChildren();
-        p = kids[kids.length-1];
+        p = kids[kids.length - 1];
       }
       return new DefaultParse(p,sentenceNumber);
     }
@@ -269,10 +270,10 @@
   public opennlp.tools.coref.mention.Parse getNextToken() {
     Parse parent = parse.getParent();
     Parse node = parse;
-    int index=-1;
+    int index = -1;
     //find parent with subsequent children
-    while(parent != null) {
-      index = parent.indexOf(node)+1;
+    while (parent != null) {
+      index = parent.indexOf(node) + 1;
       if (index == parent.getChildCount()) {
         node = parent;
         parent = parent.getParent();
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/Dictionary.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/Dictionary.java
index ef18faa..88ac6e1 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/Dictionary.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/Dictionary.java
@@ -42,7 +42,7 @@
    * @return a key indicating the specified sense number of the specified
    * lemma with the specified part-of-speech.
    */
- public  String getSenseKey(String lemma, String pos, int senseNumber);
+  public  String getSenseKey(String lemma, String pos, int senseNumber);
 
   /**
    * Returns the number of senses in the dictionary for the specified lemma.
@@ -54,12 +54,14 @@
   public int getNumSenses(String lemma, String pos);
 
   /**
-   * Returns an array of keys for each parent of the specified sense number of the specified lemma with the specified part-of-speech.
+   * Returns an array of keys for each parent of the specified sense number
+   * of the specified lemma with the specified part-of-speech.
    * 
    * @param lemma A lemmatized form of the word to look up.
    * @param pos The part-of-speech for the lemma.
    * @param senseNumber The sense number for which the parent keys are desired.
-   * @return an array of keys for each parent of the specified sense number of the specified lemma with the specified part-of-speech.
+   * @return an array of keys for each parent of the specified sense number of
+   *         the specified lemma with the specified part-of-speech.
    */
   public String[] getParentSenseKeys(String lemma, String pos, int senseNumber);
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/DictionaryFactory.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/DictionaryFactory.java
index eb0e402..5def919 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/DictionaryFactory.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/DictionaryFactory.java
@@ -37,10 +37,10 @@
       try {
         dictionary = new JWNLDictionary(System.getProperty("WNSEARCHDIR"));
       }
-      catch(IOException e) {
+      catch (IOException e) {
         System.err.println(e);
       }
-      catch(JWNLException e) {
+      catch (JWNLException e) {
         System.err.println(e);
       }
     }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/JWNLDictionary.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/JWNLDictionary.java
index 2c2d4ee..fcc3424 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/JWNLDictionary.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/JWNLDictionary.java
@@ -19,6 +19,7 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -56,21 +57,27 @@
 
   public JWNLDictionary(String searchDirectory) throws IOException, JWNLException {
     PointerType.initialize();
-	Adjective.initialize();
-	VerbFrame.initialize();
+    Adjective.initialize();
+    VerbFrame.initialize();
     Map<POS, String[][]> suffixMap = new HashMap<POS, String[][]>();
-    suffixMap.put(POS.NOUN,new String[][] {{"s",""},{"ses","s"},{"xes","x"},{"zes","z"},{"ches","ch"},{"shes","sh"},{"men","man"},{"ies","y"}});
-    suffixMap.put(POS.VERB,new String[][] {{"s",""},{"ies","y"},{"es","e"},{"es",""},{"ed","e"},{"ed",""},{"ing","e"},{"ing",""}});
+    suffixMap.put(POS.NOUN,new String[][] {{"s",""},{"ses","s"},{"xes","x"},{"zes","z"},
+        {"ches","ch"},{"shes","sh"},{"men","man"},{"ies","y"}});
+    suffixMap.put(POS.VERB,new String[][] {{"s",""},{"ies","y"},{"es","e"},{"es",""},{"ed","e"},
+        {"ed",""},{"ing","e"},{"ing",""}});
     suffixMap.put(POS.ADJECTIVE,new String[][] {{"er",""},{"est",""},{"er","e"},{"est","e"}});
     DetachSuffixesOperation tokDso = new DetachSuffixesOperation(suffixMap);
-    tokDso.addDelegate(DetachSuffixesOperation.OPERATIONS,new Operation[] {new LookupIndexWordOperation(),new LookupExceptionsOperation()});
+    tokDso.addDelegate(DetachSuffixesOperation.OPERATIONS,new Operation[] {
+        new LookupIndexWordOperation(),new LookupExceptionsOperation()});
     TokenizerOperation tokOp = new TokenizerOperation(new String[] {" ","-"});
-    tokOp.addDelegate(TokenizerOperation.TOKEN_OPERATIONS,new Operation[] {new LookupIndexWordOperation(),new LookupExceptionsOperation(),tokDso});
+    tokOp.addDelegate(TokenizerOperation.TOKEN_OPERATIONS,new Operation[] {
+        new LookupIndexWordOperation(),new LookupExceptionsOperation(),tokDso});
     DetachSuffixesOperation morphDso = new DetachSuffixesOperation(suffixMap);
-    morphDso.addDelegate(DetachSuffixesOperation.OPERATIONS,new Operation[] {new LookupIndexWordOperation(),new LookupExceptionsOperation()});
+    morphDso.addDelegate(DetachSuffixesOperation.OPERATIONS,new Operation[] {
+        new LookupIndexWordOperation(),new LookupExceptionsOperation()});
     Operation[] operations = {new LookupExceptionsOperation(), morphDso , tokOp};
     morphy = new DefaultMorphologicalProcessor(operations);
-    FileManager manager = new FileManagerImpl(searchDirectory,PrincetonRandomAccessDictionaryFile.class);
+    FileManager manager = new FileManagerImpl(searchDirectory,
+        PrincetonRandomAccessDictionaryFile.class);
     FileDictionaryElementFactory factory = new PrincetonWN17FileDictionaryElementFactory();
     FileBackedDictionary.install(manager, morphy,factory,true);
     dict = net.didion.jwnl.dictionary.Dictionary.getInstance();
@@ -123,7 +130,7 @@
   public int getNumSenses(String lemma, String pos) {
     try {
       IndexWord iw = dict.getIndexWord(POS.NOUN,lemma);
-      if (iw == null){
+      if (iw == null) {
         return 0;
       }
       return iw.getSenseCount();
@@ -135,7 +142,7 @@
 
   private void getParents(Synset synset, List<String> parents) throws JWNLException {
     Pointer[] pointers = synset.getPointers();
-    for (int pi=0,pn=pointers.length;pi<pn;pi++) {
+    for (int pi = 0, pn = pointers.length; pi < pn;pi++) {
       if (pointers[pi].getType() == PointerType.HYPERNYM) {
         Synset parent = pointers[pi].getTargetSynset();
         parents.add(String.valueOf(parent.getOffset()));
@@ -149,8 +156,8 @@
     try {
       IndexWord iw = dict.getIndexWord(POS.NOUN,lemma);
       if (iw != null) {
-        Synset synset = iw.getSense(sense+1);
-        List<String> parents = new ArrayList<String>();
+        Synset synset = iw.getSense(sense + 1);
+        List<String> parents = new ArrayList<>();
         getParents(synset,parents);
         return parents.toArray(new String[parents.size()]);
       }
@@ -166,14 +173,15 @@
 
   public static void main(String[] args) throws IOException, JWNLException {
     String searchDir = System.getProperty("WNSEARCHDIR");
-    System.err.println("searchDir="+searchDir);
+    System.err.println("searchDir=" + searchDir);
     if (searchDir != null) {
       Dictionary dict = new JWNLDictionary(System.getProperty("WNSEARCHDIR"));
       String word = args[0];
       String[] lemmas = dict.getLemmas(word,"NN");
-      for (int li=0,ln=lemmas.length;li<ln;li++) {
-        for (int si=0,sn=dict.getNumSenses(lemmas[li],"NN");si<sn;si++) {
-          System.out.println(lemmas[li]+" ("+si+")\t"+java.util.Arrays.asList(dict.getParentSenseKeys(lemmas[li],"NN",si)));
+      for (int li = 0,ln = lemmas.length; li < ln;li++) {
+        for (int si = 0, sn = dict.getNumSenses(lemmas[li],"NN"); si < sn;si++) {
+          System.out.println(lemmas[li] + " (" + si + ")\t" +
+              Arrays.asList(dict.getParentSenseKeys(lemmas[li],"NN",si)));
         }
       }
     }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/Mention.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/Mention.java
index 9593eaf..25259e7 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/Mention.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/Mention.java
@@ -57,18 +57,18 @@
   protected String nameType;
 
   public Mention(Span span, Span headSpan, int entityId, Parse parse, String extentType) {
-    this.span=span;
-    this.headSpan=headSpan;
-    this.id=entityId;
-    this.type=extentType;
+    this.span = span;
+    this.headSpan = headSpan;
+    this.id = entityId;
+    this.type = extentType;
     this.parse = parse;
   }
 
   public Mention(Span span, Span headSpan, int entityId, Parse parse, String extentType, String nameType) {
-    this.span=span;
-    this.headSpan=headSpan;
-    this.id=entityId;
-    this.type=extentType;
+    this.span = span;
+    this.headSpan = headSpan;
+    this.id = entityId;
+    this.type = extentType;
     this.parse = parse;
     this.nameType = nameType;
   }
@@ -140,7 +140,7 @@
    * @param i The id for this mention.
    */
   public void setId(int i) {
-    id=i;
+    id = i;
   }
 
   /**
@@ -154,6 +154,7 @@
 
   @Override
   public String toString() {
-    return "mention(span="+span+",hs="+headSpan+", type="+type+", id="+id+" "+parse+" )";
+    return "mention(span=" + span + ",hs=" + headSpan + ", type="
+        + type + ", id=" + id + " " + parse + " )";
   }
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/MentionContext.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/MentionContext.java
index be81b79..059910b 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/MentionContext.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/MentionContext.java
@@ -120,7 +120,9 @@
    */
   private double numberProb;
 
-  public MentionContext(Span span, Span headSpan, int entityId, Parse parse, String extentType, String nameType, int mentionIndex, int mentionsInSentence, int mentionIndexInDocument, int sentenceIndex, HeadFinder headFinder) {
+  public MentionContext(Span span, Span headSpan, int entityId, Parse parse, String extentType,
+                        String nameType, int mentionIndex, int mentionsInSentence,
+                        int mentionIndexInDocument, int sentenceIndex, HeadFinder headFinder) {
     super(span,headSpan,entityId,parse,extentType,nameType,headFinder);
     nounLocation = mentionIndex;
     maxNounLocation = mentionsInSentence;
@@ -151,8 +153,11 @@
    * @param sentenceIndex The index of the sentence which contains this mention.
    * @param headFinder An object which provides head information.
    */
-  public MentionContext(Mention mention, int mentionIndexInSentence, int mentionsInSentence, int mentionIndexInDocument, int sentenceIndex, HeadFinder headFinder) {
-    this(mention.getSpan(),mention.getHeadSpan(),mention.getId(),mention.getParse(),mention.type,mention.nameType, mentionIndexInSentence,mentionsInSentence,mentionIndexInDocument,sentenceIndex,headFinder);
+  public MentionContext(Mention mention, int mentionIndexInSentence, int mentionsInSentence,
+                        int mentionIndexInDocument, int sentenceIndex, HeadFinder headFinder) {
+    this(mention.getSpan(), mention.getHeadSpan(), mention.getId(), mention.getParse(),
+        mention.type, mention.nameType, mentionIndexInSentence, mentionsInSentence,
+        mentionIndexInDocument, sentenceIndex, headFinder);
   }
 
 
@@ -168,7 +173,8 @@
    * @param headFinder Object which provides head information.
    */
   /*
-  public MentionContext(Parse mentionParse, int mentionIndex, int mentionsInSentence, int mentionsInDocument, int sentenceIndex, String nameType, HeadFinder headFinder) {
+  public MentionContext(Parse mentionParse, int mentionIndex, int mentionsInSentence,
+  int mentionsInDocument, int sentenceIndex, String nameType, HeadFinder headFinder) {
     nounLocation = mentionIndex;
     maxNounLocation = mentionsInDocument;
     sentenceNumber = sentenceIndex;
@@ -200,13 +206,13 @@
   */
 
   private void initHeads(int headIndex) {
-    this.headTokenIndex=headIndex;
+    this.headTokenIndex = headIndex;
     this.headToken = (Parse) tokens[getHeadTokenIndex()];
     this.headTokenText = headToken.toString();
-    this.headTokenTag=headToken.getSyntacticType();
+    this.headTokenTag = headToken.getSyntacticType();
     this.firstToken = (Parse) tokens[0];
     this.firstTokenTag = firstToken.getSyntacticType();
-    this.firstTokenText=firstToken.toString();
+    this.firstTokenText = firstToken.toString();
   }
 
   /**
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/MentionFinder.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/MentionFinder.java
index 2337dea..73921e2 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/MentionFinder.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/MentionFinder.java
@@ -27,7 +27,8 @@
   /**
    * Specifies whether pre-nominal named-entities should be collected as mentions.
    *
-   * @param collectPrenominalNamedEntities true if pre-nominal named-entities should be collected; false otherwise.
+   * @param collectPrenominalNamedEntities true if pre-nominal named-entities
+   *                                       should be collected; false otherwise.
    */
   public void setPrenominalNamedEntityCollection(boolean collectPrenominalNamedEntities);
 
@@ -48,7 +49,8 @@
   /**
    * Specifies whether coordinated noun phrases should be collected as mentions.
    *
-   * @param collectCoordinatedNounPhrases true if coordinated noun phrases should be collected; false otherwise.
+   * @param collectCoordinatedNounPhrases true if coordinated noun phrases should be collected;
+   *                                      false otherwise.
    */
   public void setCoordinatedNounPhraseCollection(boolean collectCoordinatedNounPhrases);
 
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/PTBHeadFinder.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/PTBHeadFinder.java
index 723dca8..bb1ae5e 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/PTBHeadFinder.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/PTBHeadFinder.java
@@ -63,7 +63,8 @@
         Parse child0 = parts.get(0);
         Parse child1 = parts.get(1);
         Parse child2 = parts.get(2);
-        if (child1.isToken() && child1.getSyntacticType().equals("POS") && child0.isNounPhrase() && child2.isNounPhrase()) {
+        if (child1.isToken() && child1.getSyntacticType().equals("POS")
+            && child0.isNounPhrase() && child2.isNounPhrase()) {
           return child2;
         }
       }
@@ -73,7 +74,7 @@
         if (child0.isNounPhrase()) {
           List<Parse> ctoks = child0.getTokens();
           if (ctoks.size() == 0) {
-            System.err.println("PTBHeadFinder: NP "+child0+" with no tokens");
+            System.err.println("PTBHeadFinder: NP " + child0 + " with no tokens");
           }
           Parse tok = ctoks.get(ctoks.size() - 1);
           if (tok.getSyntacticType().equals("POS")) {
@@ -93,7 +94,8 @@
       //all other NPs
       for (int pi = 0; pi < parts.size(); pi++) {
         Parse child = parts.get(pi);
-        //System.err.println("PTBHeadFinder.getHead: "+p.getSyntacticType()+" "+p+" child "+pi+"="+child.getSyntacticType()+" "+child);
+        //System.err.println("PTBHeadFinder.getHead: "+p.getSyntacticType()+" "+p
+        // +" child "+pi+"="+child.getSyntacticType()+" "+child);
         if (child.isNounPhrase()) {
           return child;
         }
@@ -110,9 +112,10 @@
     boolean countTokens = false;
     int tokenCount = 0;
     //check for NP -> NN S type structures and return last token before S as head.
-    for (int sci=0,scn = sChildren.size();sci<scn;sci++) {
+    for (int sci = 0, scn = sChildren.size(); sci < scn;sci++) {
       Parse sc = sChildren.get(sci);
-      //System.err.println("PTBHeadFinder.getHeadIndex "+p+" "+p.getSyntacticType()+" sChild "+sci+" type = "+sc.getSyntacticType());
+      //System.err.println("PTBHeadFinder.getHeadIndex "+p+" "+p.getSyntacticType()
+      // +" sChild "+sci+" type = "+sc.getSyntacticType());
       if (sc.getSyntacticType().startsWith("S")) {
         if (sci != 0) {
           countTokens = true;
@@ -122,21 +125,22 @@
         }
       }
       if (countTokens) {
-        tokenCount+=sc.getTokens().size();
+        tokenCount += sc.getTokens().size();
       }
     }
     List<Parse> toks = p.getTokens();
     if (toks.size() == 0) {
-      System.err.println("PTBHeadFinder.getHeadIndex(): empty tok list for parse "+p);
+      System.err.println("PTBHeadFinder.getHeadIndex(): empty tok list for parse " + p);
     }
-    for (int ti = toks.size() - tokenCount -1; ti >= 0; ti--) {
+    for (int ti = toks.size() - tokenCount - 1; ti >= 0; ti--) {
       Parse tok = toks.get(ti);
       if (!skipSet.contains(tok.getSyntacticType())) {
         return ti;
       }
     }
-    //System.err.println("PTBHeadFinder.getHeadIndex: "+p+" hi="+toks.size()+"-"+tokenCount+" -1 = "+(toks.size()-tokenCount -1));
-    return toks.size() - tokenCount -1;
+    //System.err.println("PTBHeadFinder.getHeadIndex: "+p+" hi="+toks.size()+"-"+tokenCount
+    // +" -1 = "+(toks.size()-tokenCount -1));
+    return toks.size() - tokenCount - 1;
   }
 
   /** Returns the bottom-most head of a <code>Parse</code>.  If no
@@ -148,7 +152,9 @@
 
     while (null != (head = getHead(p))) {
       //System.err.print(" -> "+head);
-      //if (p.getEntityId() != -1 && head.getEntityId() != p.getEntityId()) {	System.err.println(p+" ("+p.getEntityId()+") -> "+head+" ("+head.getEntityId()+")");      }
+     //if (p.getEntityId() != -1 && head.getEntityId() != p.getEntityId()) {
+      // System.err.println(p+" ("+p.getEntityId()+") -> "+head+" ("+head.getEntityId()+")");
+      // }
       p = head;
     }
     //System.err.println(" -> null");
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/ShallowParseMentionFinder.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/ShallowParseMentionFinder.java
index 553d2ba..659fdd8 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/ShallowParseMentionFinder.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/ShallowParseMentionFinder.java
@@ -26,8 +26,8 @@
 
   private ShallowParseMentionFinder(HeadFinder hf) {
     headFinder = hf;
-    collectPrenominalNamedEntities=true;
-    collectCoordinatedNounPhrases=true;
+    collectPrenominalNamedEntities = true;
+    collectCoordinatedNounPhrases = true;
   }
 
   /**
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/package-info.java b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/package-info.java
index 075aae6..3f3c79f 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/mention/package-info.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/mention/package-info.java
@@ -18,4 +18,4 @@
 /**
  * Package related to the modeling mentions for coreference resolution.
  */
-package opennlp.tools.coref.mention;
\ No newline at end of file
+package opennlp.tools.coref.mention;
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/package-info.java b/opennlp-coref/src/main/java/opennlp/tools/coref/package-info.java
index 8ec4703..4b52eea 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/package-info.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/package-info.java
@@ -18,4 +18,4 @@
 /**
  * Package related to performing coreference resolution.
  */
-package opennlp.tools.coref;
\ No newline at end of file
+package opennlp.tools.coref;
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/AbstractResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/AbstractResolver.java
index 166b8dd..77b1384 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/AbstractResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/AbstractResolver.java
@@ -54,7 +54,7 @@
   protected int numSentencesBack;
 
   public AbstractResolver(int neb) {
-    numEntitiesBack=neb;
+    numEntitiesBack = neb;
     showExclusions = true;
     distances = new CountedSet<Integer>();
   }
@@ -108,14 +108,14 @@
    */
   protected int getHeadIndex(MentionContext mention) {
     Parse[] mtokens = mention.getTokenParses();
-    for (int ti=mtokens.length-1;ti>=0;ti--) {
+    for (int ti = mtokens.length - 1; ti >= 0; ti--) {
       Parse tok = mtokens[ti];
       if (!tok.getSyntacticType().equals("POS") && !tok.getSyntacticType().equals(",") &&
           !tok.getSyntacticType().equals(".")) {
         return ti;
       }
     }
-    return mtokens.length-1;
+    return mtokens.length - 1;
   }
 
   /**
@@ -157,7 +157,7 @@
   protected boolean excluded(MentionContext mention, DiscourseEntity entity) {
     MentionContext cec = entity.getLastExtent();
     return mention.getSentenceNumber() == cec.getSentenceNumber() &&
-	   mention.getIndexSpan().getEnd() <= cec.getIndexSpan().getEnd();
+        mention.getIndexSpan().getEnd() <= cec.getIndexSpan().getEnd();
   }
 
   public DiscourseEntity retain(MentionContext mention, DiscourseModel dm) {
@@ -184,11 +184,11 @@
    * 
    * @return the string of "_" delimited tokens for the specified mention.
    */
-  protected String featureString(MentionContext mention){
+  protected String featureString(MentionContext mention) {
     StringBuilder fs = new StringBuilder();
-    Object[] mtokens =mention.getTokens();
+    Object[] mtokens = mention.getTokens();
     fs.append(mtokens[0].toString());
-    for (int ti=1,tl=mtokens.length;ti<tl;ti++) {
+    for (int ti = 1, tl = mtokens.length; ti < tl; ti++) {
       fs.append("_").append(mtokens[ti].toString());
     }
     return fs.toString();
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/CommonNounResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/CommonNounResolver.java
index ab2497a..9ee64b6 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/CommonNounResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/CommonNounResolver.java
@@ -35,7 +35,8 @@
     preferFirstReferent = true;
   }
 
-  public CommonNounResolver(String projectName, ResolverMode m, NonReferentialResolver nrr) throws IOException {
+  public CommonNounResolver(String projectName, ResolverMode m, NonReferentialResolver nrr)
+      throws IOException {
     super(projectName,"cmodel", m, 80, true,nrr);
     showExclusions = false;
     preferFirstReferent = true;
@@ -55,7 +56,8 @@
   public boolean canResolve(MentionContext mention) {
     String firstTok = mention.getFirstTokenText().toLowerCase();
     String firstTokTag = mention.getFirstToken().getSyntacticType();
-    boolean rv = mention.getHeadTokenTag().equals("NN") && !ResolverUtils.definiteArticle(firstTok, firstTokTag);
+    boolean rv = mention.getHeadTokenTag().equals("NN")
+        && !ResolverUtils.definiteArticle(firstTok, firstTokTag);
     return rv;
   }
 
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/DefaultNonReferentialResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/DefaultNonReferentialResolver.java
index 87f9df8..142bab1 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/DefaultNonReferentialResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/DefaultNonReferentialResolver.java
@@ -25,27 +25,15 @@
 import java.util.Iterator;
 import java.util.List;
 
-//import opennlp.maxent.GIS;
-//import opennlp.maxent.io.BinaryGISModelReader;
-//import opennlp.maxent.io.SuffixSensitiveGISModelReader;
-//import opennlp.maxent.io.SuffixSensitiveGISModelWriter;
-//import opennlp.maxent.GIS;
-import opennlp.tools.ml.maxent.io.BinaryGISModelReader;
-import opennlp.tools.ml.maxent.GIS;
-import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
-import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelReader;
-//import opennlp.maxent.io.SuffixSensitiveGISModelReader;
-//import opennlp.maxent.io.SuffixSensitiveGISModelWriter;
-//import opennlp.model.Event;
-import opennlp.tools.ml.model.MaxentModel;
-//import opennlp.model.MaxentModel;
-
-import opennlp.tools.ml.model.EventStream;
-//import opennlp.model.MaxentModel;
 import opennlp.tools.coref.mention.MentionContext;
 import opennlp.tools.coref.mention.Parse;
+import opennlp.tools.ml.maxent.GIS;
+import opennlp.tools.ml.maxent.io.BinaryGISModelReader;
+import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelReader;
+import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
 import opennlp.tools.ml.model.Event;
-import opennlp.tools.util.CollectionEventStream;
+import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.ObjectStreamUtils;
 
 /**
  * Default implementation of the {@link NonReferentialResolver} interface.
@@ -61,30 +49,32 @@
   private String modelExtension = ".bin.gz";
   private int nonRefIndex;
 
-  public DefaultNonReferentialResolver(String projectName, String name, ResolverMode mode) throws IOException {
+  public DefaultNonReferentialResolver(String projectName, String name, ResolverMode mode)
+      throws IOException {
     this.mode = mode;
-    this.modelName = projectName+"/"+name+".nr";
+    this.modelName = projectName + "/" + name + ".nr";
     if (mode == ResolverMode.TRAIN) {
       events = new ArrayList<Event>();
     }
     else if (mode == ResolverMode.TEST) {
       if (loadAsResource) {
-        model = (new BinaryGISModelReader(new DataInputStream(this.getClass().getResourceAsStream(modelName)))).getModel();
+        model = new BinaryGISModelReader(new DataInputStream(
+            this.getClass().getResourceAsStream(modelName))).getModel();
       }
       else {
-        model = (new SuffixSensitiveGISModelReader(new File(modelName+modelExtension))).getModel();
+        model = (new SuffixSensitiveGISModelReader(new File(modelName + modelExtension))).getModel();
       }
       nonRefIndex = model.getIndex(MaxentResolver.SAME);
     }
     else {
-      throw new RuntimeException("unexpected mode "+mode);
+      throw new RuntimeException("unexpected mode " + mode);
     }
   }
 
   public double getNonReferentialProbability(MentionContext mention) {
     List<String> features = getFeatures(mention);
     double r = model.eval(features.toArray(new String[features.size()]))[nonRefIndex];
-    if (debugOn) System.err.println(this +" " + mention.toText() + " ->  null " + r + " " + features);
+    if (debugOn) System.err.println(this + " " + mention.toText() + " ->  null " + r + " " + features);
     return r;
   }
 
@@ -127,16 +117,18 @@
 
   public void train() throws IOException {
     if (ResolverMode.TRAIN == mode) {
-      System.err.println(this +" referential");
+      System.err.println(this + " referential");
       if (debugOn) {
-        FileWriter writer = new FileWriter(modelName+".events");
-        for (Iterator<Event> ei=events.iterator();ei.hasNext();) {
+        FileWriter writer = new FileWriter(modelName + ".events");
+        for (Iterator<Event> ei = events.iterator(); ei.hasNext();) {
           Event e = ei.next();
-          writer.write(e.toString()+"\n");
+          writer.write(e.toString() + "\n");
         }
         writer.close();
       }
-      (new SuffixSensitiveGISModelWriter(GIS.trainModel((EventStream)new CollectionEventStream(events),100,10),new File(modelName+modelExtension))).persist();
+      new SuffixSensitiveGISModelWriter(GIS.trainModel(
+          ObjectStreamUtils.createObjectStream(events),100,10),
+          new File(modelName + modelExtension)).persist();
     }
   }
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/DefiniteNounResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/DefiniteNounResolver.java
index c64121d..f9921e6 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/DefiniteNounResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/DefiniteNounResolver.java
@@ -34,7 +34,8 @@
     //preferFirstReferent = true;
   }
 
-  public DefiniteNounResolver(String projectName, ResolverMode m, NonReferentialResolver nrr) throws IOException {
+  public DefiniteNounResolver(String projectName, ResolverMode m, NonReferentialResolver nrr)
+      throws IOException {
     super(projectName, "defmodel", m, 80,nrr);
     //preferFirstReferent = true;
   }
@@ -44,7 +45,8 @@
     Object[] mtokens = mention.getTokens();
 
     String firstTok = mention.getFirstTokenText().toLowerCase();
-    boolean rv = mtokens.length > 1 && !mention.getHeadTokenTag().startsWith("NNP") && ResolverUtils.definiteArticle(firstTok, mention.getFirstTokenTag());
+    boolean rv = mtokens.length > 1 && !mention.getHeadTokenTag().startsWith("NNP")
+        && ResolverUtils.definiteArticle(firstTok, mention.getFirstTokenTag());
     //if (rv) {
     //  System.err.println("defNp "+ec);
     //}
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/IsAResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/IsAResolver.java
index 37629d3..412e00f 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/IsAResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/IsAResolver.java
@@ -49,7 +49,8 @@
 
   public boolean canResolve(MentionContext ec) {
     if (ec.getHeadTokenTag().startsWith("NN")) {
-      return (ec.getPreviousToken() != null && predicativePattern.matcher(ec.getPreviousToken().toString()).matches());
+      return ec.getPreviousToken() != null
+          && predicativePattern.matcher(ec.getPreviousToken().toString()).matches();
     }
     return false;
   }
@@ -57,13 +58,15 @@
   @Override
   protected boolean excluded(MentionContext ec, DiscourseEntity de) {
     MentionContext cec = de.getLastExtent();
-    //System.err.println("IsAResolver.excluded?: ec.span="+ec.getSpan()+" cec.span="+cec.getSpan()+" cec="+cec.toText()+" lastToken="+ec.getNextToken());
+    //System.err.println("IsAResolver.excluded?: ec.span="+ec.getSpan()+" cec.span="+cec.getSpan()
+    //    +" cec="+cec.toText()+" lastToken="+ec.getNextToken());
     if (ec.getSentenceNumber() != cec.getSentenceNumber()) {
       //System.err.println("IsAResolver.excluded: (true) not same sentence");
       return (true);
     }
     //shallow parse appositives
-    //System.err.println("IsAResolver.excluded: ec="+ec.toText()+" "+ec.span+" cec="+cec.toText()+" "+cec.span);
+    //System.err.println("IsAResolver.excluded: ec="+ec.toText()+" "
+    //    +ec.span+" cec="+cec.toText()+" "+cec.span);
     if (cec.getIndexSpan().getEnd() == ec.getIndexSpan().getStart() - 2) {
       return (false);
     }
@@ -73,7 +76,8 @@
       return (false);
     }
     //full parse w/ trailing comma or period
-    if (cec.getIndexSpan().getEnd() <= ec.getIndexSpan().getEnd() + 2 && (ec.getNextToken() != null && (ec.getNextToken().toString().equals(",") || ec.getNextToken().toString().equals(".")))) {
+    if (cec.getIndexSpan().getEnd() <= ec.getIndexSpan().getEnd() + 2 && (ec.getNextToken() != null
+        && (ec.getNextToken().toString().equals(",") || ec.getNextToken().toString().equals(".")))) {
       //System.err.println("IsAResolver.excluded: (false) spans end + punct");
       return (false);
     }
@@ -106,11 +110,12 @@
       for (int ci = 0, cn = rightContexts.size(); ci < cn; ci++) {
         features.add("r" + rightContexts.get(ci));
       }
-      features.add("hts"+ant.getHeadTokenTag()+","+mention.getHeadTokenTag());
+      features.add("hts" + ant.getHeadTokenTag() + "," + mention.getHeadTokenTag());
     }
     /*
     if (entity != null) {
-      //System.err.println("MaxentIsResolver.getFeatures: ["+ec2.toText()+"] -> ["+de.getLastExtent().toText()+"]");
+      //System.err.println("MaxentIsResolver.getFeatures:
+       [ "+ec2.toText()+"] -> ["+de.getLastExtent().toText()+"]");
       //previous word and tag
       if (ant.prevToken != null) {
         features.add("pw=" + ant.prevToken);
@@ -159,7 +164,8 @@
           features.add("w=" + c1toks.get(i) + "|" + "w=" + c2toks.get(j));
           features.add("w=" + c1toks.get(i) + "|" + "t=" + ((Parse) c2toks.get(j)).getSyntacticType());
           features.add("t=" + ((Parse) c1toks.get(i)).getSyntacticType() + "|" + "w=" + c2toks.get(j));
-          features.add("t=" + ((Parse) c1toks.get(i)).getSyntacticType() + "|" + "t=" + ((Parse) c2toks.get(j)).getSyntacticType());
+          features.add("t=" + ((Parse) c1toks.get(i)).getSyntacticType() + "|" + "t=" +
+              ((Parse) c2toks.get(j)).getSyntacticType());
         }
       }
       features.add("ht=" + ant.headTokenTag + "|" + "ht=" + mention.headTokenTag);
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/MaxentResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/MaxentResolver.java
index 0490dcb..12ff359 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/MaxentResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/MaxentResolver.java
@@ -24,32 +24,20 @@
 import java.util.Iterator;
 import java.util.List;
 
-//import opennlp.maxent.GIS;
-//import opennlp.maxent.io.SuffixSensitiveGISModelReader;
-//import opennlp.maxent.io.SuffixSensitiveGISModelWriter;
-//import opennlp.model.EventStream;
-//import opennlp.model.MaxentModel;
-
-
-import opennlp.tools.ml.maxent.GIS;
-import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
-import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelReader;
-//import opennlp.maxent.GIS;
-//import opennlp.maxent.io.SuffixSensitiveGISModelReader;
-//import opennlp.maxent.io.SuffixSensitiveGISModelWriter;
-//import opennlp.model.Event;
-//import opennlp.model.MaxentModel;
-import opennlp.tools.ml.model.MaxentModel;
-import opennlp.tools.ml.model.EventStream;
 import opennlp.tools.coref.DiscourseEntity;
 import opennlp.tools.coref.DiscourseModel;
 import opennlp.tools.coref.mention.MentionContext;
 import opennlp.tools.coref.sim.TestSimilarityModel;
+import opennlp.tools.ml.maxent.GIS;
+import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelReader;
+import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
 import opennlp.tools.ml.model.Event;
-import opennlp.tools.util.CollectionEventStream;
+import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.ObjectStreamUtils;
 
 /**
- *  Provides common functionality used by classes which implement the {@link Resolver} class and use maximum entropy models to make resolution decisions.
+ *  Provides common functionality used by classes which implement the {@link Resolver} class
+ *  and use maximum entropy models to make resolution decisions.
  */
 public abstract class MaxentResolver extends AbstractResolver {
 
@@ -61,7 +49,7 @@
   public static final String DEFAULT = "default";
 
 
-  private static boolean debugOn=false;
+  private static boolean debugOn = false;
 
   private String modelName;
   private MaxentModel model;
@@ -75,8 +63,10 @@
    * are considered.
    */
   protected boolean preferFirstReferent;
-  /** When true, this designates that training should consist of a single positive and a single negative example
-   * (when possible) for each mention. */
+  /**
+   * When true, this designates that training should consist of a single
+   * positive and a single negative example (when possible) for each mention.
+   */
   protected boolean pairedSampleSelection;
   
   /** When true, this designates that the same maximum entropy model should be used non-reference
@@ -93,8 +83,9 @@
   private static final String modelExtension = ".bin.gz";
 
   /**
-   * Creates a maximum-entropy-based resolver which will look the specified number of entities back for a referent.
-   * This constructor is only used for unit testing.
+   * Creates a maximum-entropy-based resolver which will look the specified number of
+   * entities back for a referent. This constructor is only used for unit testing.
+   *
    * @param numberOfEntitiesBack
    * @param preferFirstReferent
    */
@@ -118,14 +109,16 @@
    * @param nonReferentialResolver Determines how likely it is that this entity is non-referential.
    * @throws IOException If the model file is not found or can not be written to.
    */
-  public MaxentResolver(String modelDirectory, String name, ResolverMode mode, int numberOfEntitiesBack, boolean preferFirstReferent, NonReferentialResolver nonReferentialResolver) throws IOException {
+  public MaxentResolver(String modelDirectory, String name, ResolverMode mode, int numberOfEntitiesBack,
+                        boolean preferFirstReferent, NonReferentialResolver nonReferentialResolver)
+      throws IOException {
     super(numberOfEntitiesBack);
     this.preferFirstReferent = preferFirstReferent;
     this.nonReferentialResolver = nonReferentialResolver;
     this.mode = mode;
-    this.modelName = modelDirectory+"/"+name;
+    this.modelName = modelDirectory + "/" + name;
     if (ResolverMode.TEST == this.mode) {
-      model = (new SuffixSensitiveGISModelReader(new File(modelName+modelExtension))).getModel();
+      model = (new SuffixSensitiveGISModelReader(new File(modelName + modelExtension))).getModel();
       sameIndex = model.getIndex(SAME);
     }
     else if (ResolverMode.TRAIN == this.mode) {
@@ -148,22 +141,32 @@
    * for a referent.
    * @throws IOException If the model file is not found or can not be written to.
    */
-  public MaxentResolver(String modelDirectory, String modelName, ResolverMode mode, int numberEntitiesBack) throws IOException {
+  public MaxentResolver(String modelDirectory, String modelName, ResolverMode mode,
+                        int numberEntitiesBack) throws IOException {
     this(modelDirectory, modelName, mode, numberEntitiesBack, false);
   }
 
-  public MaxentResolver(String modelDirectory, String modelName, ResolverMode mode, int numberEntitiesBack, NonReferentialResolver nonReferentialResolver) throws IOException {
+  public MaxentResolver(String modelDirectory, String modelName, ResolverMode mode,
+                        int numberEntitiesBack, NonReferentialResolver nonReferentialResolver)
+      throws IOException {
     this(modelDirectory, modelName, mode, numberEntitiesBack, false,nonReferentialResolver);
   }
 
-  public MaxentResolver(String modelDirectory, String modelName, ResolverMode mode, int numberEntitiesBack, boolean preferFirstReferent) throws IOException {
-    //this(projectName, modelName, mode, numberEntitiesBack, preferFirstReferent, SingletonNonReferentialResolver.getInstance(projectName,mode));
-    this(modelDirectory, modelName, mode, numberEntitiesBack, preferFirstReferent, new DefaultNonReferentialResolver(modelDirectory, modelName, mode));
+  public MaxentResolver(String modelDirectory, String modelName, ResolverMode mode,
+                        int numberEntitiesBack, boolean preferFirstReferent) throws IOException {
+    //this(projectName, modelName, mode, numberEntitiesBack, preferFirstReferent,
+    // SingletonNonReferentialResolver.getInstance(projectName,mode));
+    this(modelDirectory, modelName, mode, numberEntitiesBack, preferFirstReferent,
+        new DefaultNonReferentialResolver(modelDirectory, modelName, mode));
   }
 
-  public MaxentResolver(String modelDirectory, String modelName, ResolverMode mode, int numberEntitiesBack, boolean preferFirstReferent, double nonReferentialProbability) throws IOException {
-    //this(projectName, modelName, mode, numberEntitiesBack, preferFirstReferent, SingletonNonReferentialResolver.getInstance(projectName,mode));
-    this(modelDirectory, modelName, mode, numberEntitiesBack, preferFirstReferent, new FixedNonReferentialResolver(nonReferentialProbability));
+  public MaxentResolver(String modelDirectory, String modelName, ResolverMode mode,
+                        int numberEntitiesBack, boolean preferFirstReferent,
+                        double nonReferentialProbability) throws IOException {
+    //this(projectName, modelName, mode, numberEntitiesBack, preferFirstReferent,
+    // SingletonNonReferentialResolver.getInstance(projectName,mode));
+    this(modelDirectory, modelName, mode, numberEntitiesBack, preferFirstReferent,
+        new FixedNonReferentialResolver(nonReferentialProbability));
   }
 
   public DiscourseEntity resolve(MentionContext ec, DiscourseModel dm) {
@@ -171,7 +174,7 @@
     int ei = 0;
     double nonReferentialProbability = nonReferentialResolver.getNonReferentialProbability(ec);
     if (debugOn) {
-      System.err.println(this +".resolve: " + ec.toText() + " -> " +  "null "+nonReferentialProbability);
+      System.err.println(this + ".resolve: " + ec.toText() + " -> " +  "null " + nonReferentialProbability);
     }
     for (; ei < getNumEntities(dm); ei++) {
       de = dm.getEntity(ei);
@@ -181,7 +184,8 @@
       if (excluded(ec, de)) {
         candProbs[ei] = 0;
         if (debugOn) {
-          System.err.println("excluded "+this +".resolve: " + ec.toText() + " -> " + de + " " + candProbs[ei]);
+          System.err.println("excluded " + this + ".resolve: " + ec.toText() + " -> " + de + " "
+              + candProbs[ei]);
         }
       }
       else {
@@ -195,7 +199,8 @@
           candProbs[ei] = 0;
         }
         if (debugOn) {
-          System.err.println(this +".resolve: " + ec.toText() + " -> " + de + " ("+ec.getGender()+","+de.getGender()+") " + candProbs[ei] + " " + lfeatures);
+          System.err.println(this + ".resolve: " + ec.toText() + " -> " + de + " ("
+              + ec.getGender() + "," + de.getGender() + ") " + candProbs[ei] + " " + lfeatures);
         }
       }
       if (preferFirstReferent && candProbs[ei] > nonReferentialProbability) {
@@ -257,20 +262,25 @@
         if (excluded(mention, cde)) {
           if (showExclusions) {
             if (mention.getId() != -1 && entityMention.getId() == mention.getId()) {
-              System.err.println(this +".retain: Referent excluded: (" + mention.getId() + ") " + mention.toText() + " " + mention.getIndexSpan() + " -> (" + entityMention.getId() + ") " + entityMention.toText() + " " + entityMention.getSpan() + " " + this);
+              System.err.println(this + ".retain: Referent excluded: (" + mention.getId() + ") "
+                  + mention.toText() + " " + mention.getIndexSpan() + " -> (" + entityMention.getId()
+                  + ") " + entityMention.toText() + " " + entityMention.getSpan() + " " + this);
             }
           }
         }
         else {
           hasReferentialCandidate = true;
           boolean useAsDifferentExample = defaultReferent(cde);
-          //if (!sampleSelection || (mention.getId() != -1 && entityMention.getId() == mention.getId()) || (!nonReferentFound && useAsDifferentExample)) {
+          //if (!sampleSelection || (mention.getId() != -1 && entityMention.getId() == mention.getId())
+          // || (!nonReferentFound && useAsDifferentExample)) {
             List<String> features = getFeatures(mention, cde);
 
             //add Event to Model
             if (debugOn) {
-              System.err.println(this +".retain: " + mention.getId() + " " + mention.toText() + " -> " + entityMention.getId() + " " + cde);
+              System.err.println(this + ".retain: " + mention.getId() + " " + mention.toText()
+                  + " -> " + entityMention.getId() + " " + cde);
             }
+
             if (mention.getId() != -1 && entityMention.getId() == mention.getId()) {
               referentFound = true;
               events.add(new Event(SAME, features.toArray(new String[features.size()])));
@@ -295,21 +305,23 @@
       if (hasReferentialCandidate) {
         nonReferentialResolver.addEvent(mention);
       }
-      return (de);
+
+      return de;
     }
     else {
-      return (super.retain(mention, dm));
+      return super.retain(mention, dm);
     }
   }
 
   /**
-   * Returns a list of features for deciding whether the specified mention refers to the specified discourse entity.
+   * Returns a list of features for deciding whether the specified mention refers to the
+   * specified discourse entity.
    * @param mention the mention being considers as possibly referential.
    * @param entity The discourse entity with which the mention is being considered referential.
    * @return a list of features used to predict reference between the specified mention and entity.
    */
   protected List<String> getFeatures(MentionContext mention, DiscourseEntity entity) {
-    List<String> features = new ArrayList<String>();
+    List<String> features = new ArrayList<>();
     features.add(DEFAULT);
     features.addAll(ResolverUtils.getCompatibilityFeatures(mention, entity,simModel));
     return features;
@@ -319,15 +331,16 @@
   public void train() throws IOException {
     if (ResolverMode.TRAIN == mode) {
       if (debugOn) {
-        System.err.println(this +" referential");
-        FileWriter writer = new FileWriter(modelName+".events");
-        for (Iterator<Event> ei=events.iterator();ei.hasNext();) {
+        System.err.println(this + " referential");
+        FileWriter writer = new FileWriter(modelName + ".events");
+        for (Iterator<Event> ei = events.iterator(); ei.hasNext();) {
           Event e = ei.next();
-          writer.write(e.toString()+"\n");
+          writer.write(e.toString() + "\n");
         }
         writer.close();
       }
-      (new SuffixSensitiveGISModelWriter(GIS.trainModel((EventStream)new CollectionEventStream(events),100,10),new File(modelName+modelExtension))).persist();
+      (new SuffixSensitiveGISModelWriter(GIS.trainModel(ObjectStreamUtils.createObjectStream(events),
+          100,10),new File(modelName + modelExtension))).persist();
       nonReferentialResolver.train();
     }
   }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/PluralNounResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/PluralNounResolver.java
index 53d66d4..d7a9761 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/PluralNounResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/PluralNounResolver.java
@@ -35,7 +35,8 @@
     showExclusions = false;
   }
 
-  public PluralNounResolver(String projectName, ResolverMode m, NonReferentialResolver nrr) throws IOException {
+  public PluralNounResolver(String projectName, ResolverMode m, NonReferentialResolver nrr)
+      throws IOException {
     super(projectName,"plmodel", m, 80, true,nrr);
     showExclusions = false;
   }
@@ -56,7 +57,8 @@
   public boolean canResolve(MentionContext mention) {
     String firstTok = mention.getFirstTokenText().toLowerCase();
     String firstTokTag = mention.getFirstToken().getSyntacticType();
-    boolean rv = mention.getHeadTokenTag().equals("NNS") && !ResolverUtils.definiteArticle(firstTok, firstTokTag);
+    boolean rv = mention.getHeadTokenTag().equals("NNS")
+        && !ResolverUtils.definiteArticle(firstTok, firstTokTag);
     return rv;
   }
 
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/PluralPronounResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/PluralPronounResolver.java
index 85c8c59..345f118 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/PluralPronounResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/PluralPronounResolver.java
@@ -35,7 +35,8 @@
     super(projectName, "tmodel", m, 30);
   }
 
-  public PluralPronounResolver(String projectName, ResolverMode m,NonReferentialResolver nrr) throws IOException {
+  public PluralPronounResolver(String projectName, ResolverMode m,NonReferentialResolver nrr)
+      throws IOException {
     super(projectName, "tmodel", m, 30,nrr);
   }
 
@@ -81,12 +82,15 @@
   @Override
   protected boolean outOfRange(MentionContext mention, DiscourseEntity entity) {
     MentionContext cec = entity.getLastExtent();
-    //System.err.println("MaxentPluralPronounResolver.outOfRange: ["+ec.toText()+" ("+ec.id+")] ["+cec.toText()+" ("+cec.id+")] ec.sentenceNumber=("+ec.sentenceNumber+")-cec.sentenceNumber=("+cec.sentenceNumber+") > "+NUM_SENTS_BACK_PRONOUNS);
+    //System.err.println("MaxentPluralPronounResolver.outOfRange: ["+ec.toText()+" ("+ec.id+")]
+    // ["+cec.toText()+" ("+cec.id+")] ec.sentenceNumber=("+ec.sentenceNumber+")-cec.sentenceNumber
+    // =("+cec.sentenceNumber+") > "+NUM_SENTS_BACK_PRONOUNS);
     return (mention.getSentenceNumber() - cec.getSentenceNumber() > NUM_SENTS_BACK_PRONOUNS);
   }
 
   public boolean canResolve(MentionContext mention) {
     String tag = mention.getHeadTokenTag();
-    return (tag != null && tag.startsWith("PRP") && ResolverUtils.pluralThirdPersonPronounPattern.matcher(mention.getHeadTokenText()).matches());
+    return (tag != null && tag.startsWith("PRP")
+        && ResolverUtils.pluralThirdPersonPronounPattern.matcher(mention.getHeadTokenText()).matches());
   }
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/ProperNounResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/ProperNounResolver.java
index e922af2..0e6070c 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/ProperNounResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/ProperNounResolver.java
@@ -50,7 +50,8 @@
     showExclusions = false;
   }
 
-  public ProperNounResolver(String projectName, ResolverMode m,NonReferentialResolver nonRefResolver) throws IOException {
+  public ProperNounResolver(String projectName, ResolverMode m,NonReferentialResolver nonRefResolver)
+      throws IOException {
     super(projectName,"pnmodel", m, 500,nonRefResolver);
     if (!acroMapLoaded) {
       initAcronyms(projectName + "/acronyms");
@@ -135,7 +136,8 @@
 
     for (Iterator<MentionContext> ei = entity.getMentions(); ei.hasNext();) {
       MentionContext xec = ei.next();
-      if (xec.getHeadTokenTag().startsWith("NNP")) { // || initialCaps.matcher(xec.headToken.toString()).find()) {
+      if (xec.getHeadTokenTag().startsWith("NNP")) {
+        // || initialCaps.matcher(xec.headToken.toString()).find()) {
         //System.err.println("MaxentProperNounResolver.exclude: kept "+xec.toText()+" with "+xec.headTag);
         return false;
       }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/ResolverUtils.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/ResolverUtils.java
index 41ac100..676b6de 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/ResolverUtils.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/ResolverUtils.java
@@ -42,31 +42,47 @@
   private static final Pattern initialCaps = Pattern.compile("^[A-Z]");
 
   /** Regular expression for English singular third person pronouns. */
-  public static final Pattern singularThirdPersonPronounPattern = Pattern.compile("^(he|she|it|him|her|his|hers|its|himself|herself|itself)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern singularThirdPersonPronounPattern =
+      Pattern.compile("^(he|she|it|him|her|his|hers|its|himself|herself|itself)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English plural third person pronouns. */
-  public static final Pattern pluralThirdPersonPronounPattern = Pattern.compile("^(they|their|theirs|them|themselves)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern pluralThirdPersonPronounPattern =
+      Pattern.compile("^(they|their|theirs|them|themselves)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English speech pronouns. */
-  public static final Pattern speechPronounPattern = Pattern.compile("^(I|me|my|you|your|you|we|us|our|ours)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern speechPronounPattern =
+      Pattern.compile("^(I|me|my|you|your|you|we|us|our|ours)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English female pronouns. */
-  public static final Pattern femalePronounPattern = Pattern.compile("^(she|her|hers|herself)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern femalePronounPattern =
+      Pattern.compile("^(she|her|hers|herself)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English neuter pronouns. */
-  public static final Pattern neuterPronounPattern = Pattern.compile("^(it|its|itself)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern neuterPronounPattern =
+      Pattern.compile("^(it|its|itself)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English first person pronouns. */
-  public static final Pattern firstPersonPronounPattern = Pattern.compile("^(I|me|my|we|our|us|ours)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern firstPersonPronounPattern =
+      Pattern.compile("^(I|me|my|we|our|us|ours)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English singular second person pronouns. */
-  public static final Pattern secondPersonPronounPattern = Pattern.compile("^(you|your|yours)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern secondPersonPronounPattern =
+      Pattern.compile("^(you|your|yours)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English third person pronouns. */
-  public static final Pattern thirdPersonPronounPattern = Pattern.compile("^(he|she|it|him|her|his|hers|its|himself|herself|itself|they|their|theirs|them|themselves)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern thirdPersonPronounPattern =
+      Pattern.compile("^(he|she|it|him|her|his|hers|its|himself|herself|itself|they|" +
+      "their|theirs|them|themselves)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English singular pronouns. */
-  public static final Pattern singularPronounPattern = Pattern.compile("^(I|me|my|he|she|it|him|her|his|hers|its|himself|herself|itself)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern singularPronounPattern =
+      Pattern.compile("^(I|me|my|he|she|it|him|her|his|hers|its|himself|herself|itself)$",
+      Pattern.CASE_INSENSITIVE);
   /** Regular expression for English plural pronouns. */
-  public static final Pattern pluralPronounPattern = Pattern.compile("^(we|us|our|ours|they|their|theirs|them|themselves)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern pluralPronounPattern =
+      Pattern.compile("^(we|us|our|ours|they|their|theirs|them|themselves)$",
+      Pattern.CASE_INSENSITIVE);
   /** Regular expression for English male pronouns. */
-  public static final Pattern malePronounPattern = Pattern.compile("^(he|him|his|himself)$",Pattern.CASE_INSENSITIVE);
+  public static final Pattern malePronounPattern =
+      Pattern.compile("^(he|him|his|himself)$",Pattern.CASE_INSENSITIVE);
   /** Regular expression for English honorifics. */
-  public static final Pattern honorificsPattern = Pattern.compile("[A-Z][a-z]+\\.$|^[A-Z][b-df-hj-np-tv-xz]+$");
+  public static final Pattern honorificsPattern =
+      Pattern.compile("[A-Z][a-z]+\\.$|^[A-Z][b-df-hj-np-tv-xz]+$");
   /** Regular expression for English corporate designators. */
-  public static final Pattern designatorsPattern = Pattern.compile("[a-z]\\.$|^[A-Z][b-df-hj-np-tv-xz]+$|^Co(rp)?$");
+  public static final Pattern designatorsPattern =
+      Pattern.compile("[a-z]\\.$|^[A-Z][b-df-hj-np-tv-xz]+$|^Co(rp)?$");
 
   
   private static final String NUM_COMPATIBLE = "num.compatible";
@@ -237,7 +253,8 @@
       if (exactMatchFeature != null) {
         featureSet.add(exactMatchFeature);
       }
-      else if (entityMention.getParse().isCoordinatedNounPhrase() && !mention.getParse().isCoordinatedNounPhrase()) {
+      else if (entityMention.getParse().isCoordinatedNounPhrase()
+          && !mention.getParse().isCoordinatedNounPhrase()) {
         featureSet.add("cmix");
       }
       else {
@@ -252,7 +269,8 @@
       Parse[] xtoks = entityMention.getTokenParses();
       int headIndex = entityMention.getHeadTokenIndex();
       //if (!mention.getHeadTokenTag().equals(entityMention.getHeadTokenTag())) {
-      //  //System.err.println("skipping "+mention.headTokenText+" with "+xec.headTokenText+" because "+mention.headTokenTag+" != "+xec.headTokenTag);
+      //  //System.err.println("skipping "+mention.headTokenText+" with "+xec.headTokenText
+      // +" because "+mention.headTokenTag+" != "+xec.headTokenTag);
       //  continue;
       //}  want to match NN NNP
       String entityMentionHeadString = entityMention.getHeadTokenText().toLowerCase();
@@ -340,10 +358,10 @@
    * @return a normalized string representation of the specified mention.
    */
   public static String stripNp(MentionContext mention) {
-    int start=mention.getNonDescriptorStart(); //start after descriptors
+    int start = mention.getNonDescriptorStart(); //start after descriptors
   
     Parse[] mtokens = mention.getTokenParses();
-    int end=mention.getHeadTokenIndex()+1;
+    int end = mention.getHeadTokenIndex() + 1;
     if (start == end) {
       //System.err.println("stripNp: return null 1");
       return null;
@@ -358,7 +376,7 @@
     }
     //get to first NNP
     String type;
-    for (int i=start;i<end;i++) {
+    for (int i = start; i < end;i++) {
       type = mtokens[start].getSyntacticType();
       if (type.startsWith("NNP")) {
         break;
@@ -369,7 +387,7 @@
       //System.err.println("stripNp: return null 3");
       return null;
     }
-    if (start+1 != end) { // don't do this on head words, to keep "U.S."
+    if (start + 1 != end) { // don't do this on head words, to keep "U.S."
       //strip off honorifics in begining
       if (honorificsPattern.matcher(mtokens[start].toString()).find()) {
         start++;
@@ -395,7 +413,8 @@
   }
 
   public static MentionContext getProperNounExtent(DiscourseEntity de) {
-    for (Iterator<MentionContext> ei = de.getMentions(); ei.hasNext();) { //use first extent which is propername
+    //use first extent which is propername
+    for (Iterator<MentionContext> ei = de.getMentions(); ei.hasNext();) {
       MentionContext xec = ei.next();
       String xecHeadTag = xec.getHeadTokenTag();
       if (xecHeadTag.startsWith("NNP") || initialCaps.matcher(xec.getHeadTokenText()).find()) {
@@ -450,7 +469,7 @@
     if (mention.getHeadTokenTag().startsWith("PRP")) {
       Map<String, String> pronounMap = getPronounFeatureMap(mention.getHeadTokenText());
       //System.err.println("getPronounMatchFeatures.pronounMap:"+pronounMap);
-      for (Iterator<MentionContext> mi=entity.getMentions();mi.hasNext();) {
+      for (Iterator<MentionContext> mi = entity.getMentions();mi.hasNext();) {
         MentionContext candidateMention = mi.next();
         if (candidateMention.getHeadTokenTag().startsWith("PRP")) {
           if (mention.getHeadTokenText().equalsIgnoreCase(candidateMention.getHeadTokenText())) {
@@ -458,7 +477,8 @@
             break;
           }
           else {
-            Map<String, String> candidatePronounMap = getPronounFeatureMap(candidateMention.getHeadTokenText());
+            Map<String, String> candidatePronounMap =
+                getPronounFeatureMap(candidateMention.getHeadTokenText());
             //System.err.println("getPronounMatchFeatures.candidatePronounMap:"+candidatePronounMap);
             boolean allKeysMatch = true;
             for (Iterator<String> ki = pronounMap.keySet().iterator(); ki.hasNext();) {
@@ -500,16 +520,19 @@
   public static List<String> getDistanceFeatures(MentionContext mention, DiscourseEntity entity) {
     List<String> features = new ArrayList<String>();
     MentionContext cec = entity.getLastExtent();
-    int entityDistance = mention.getNounPhraseDocumentIndex()- cec.getNounPhraseDocumentIndex();
+    int entityDistance = mention.getNounPhraseDocumentIndex() - cec.getNounPhraseDocumentIndex();
     int sentenceDistance = mention.getSentenceNumber() - cec.getSentenceNumber();
     int hobbsEntityDistance;
     if (sentenceDistance == 0) {
       hobbsEntityDistance = cec.getNounPhraseSentenceIndex();
     }
     else {
-      //hobbsEntityDistance = entityDistance - (entities within sentence from mention to end) + (entities within sentence form start to mention)
-      //hobbsEntityDistance = entityDistance - (cec.maxNounLocation - cec.getNounPhraseSentenceIndex) + cec.getNounPhraseSentenceIndex;
-      hobbsEntityDistance = entityDistance + (2 * cec.getNounPhraseSentenceIndex()) - cec.getMaxNounPhraseSentenceIndex();
+      //hobbsEntityDistance = entityDistance - (entities within sentence from mention to end)
+      // + (entities within sentence form start to mention)
+      //hobbsEntityDistance = entityDistance - (cec.maxNounLocation - cec.getNounPhraseSentenceIndex)
+      // + cec.getNounPhraseSentenceIndex;
+      hobbsEntityDistance = entityDistance +
+          (2 * cec.getNounPhraseSentenceIndex()) - cec.getMaxNounPhraseSentenceIndex();
     }
     features.add("hd=" + hobbsEntityDistance);
     features.add("de=" + entityDistance);
@@ -553,9 +576,11 @@
    * Returns features indicating whether the specified mention and the specified entity are compatible.
    * @param mention The mention.
    * @param entity The entity.
-   * @return list of features indicating whether the specified mention and the specified entity are compatible.
+   * @return list of features indicating whether the specified mention and the specified
+   *         entity are compatible.
    */
-  public static List<String> getCompatibilityFeatures(MentionContext mention, DiscourseEntity entity, TestSimilarityModel simModel) {
+  public static List<String> getCompatibilityFeatures(MentionContext mention,
+                                                      DiscourseEntity entity, TestSimilarityModel simModel) {
     List<String> compatFeatures = new ArrayList<String>();
     String semCompatible = getSemanticCompatibilityFeature(mention, entity, simModel);
     compatFeatures.add(semCompatible);
@@ -563,10 +588,12 @@
     compatFeatures.add(genCompatible);
     String numCompatible = ResolverUtils.getNumberCompatibilityFeature(mention, entity);
     compatFeatures.add(numCompatible);
-    if (semCompatible.equals(SIM_COMPATIBLE) && genCompatible.equals(GEN_COMPATIBLE) && numCompatible.equals(ResolverUtils.NUM_COMPATIBLE)) {
+    if (semCompatible.equals(SIM_COMPATIBLE) && genCompatible.equals(GEN_COMPATIBLE)
+        && numCompatible.equals(ResolverUtils.NUM_COMPATIBLE)) {
       compatFeatures.add("all.compatible");
     }
-    else if (semCompatible.equals(SIM_INCOMPATIBLE) || genCompatible.equals(GEN_INCOMPATIBLE) || numCompatible.equals(ResolverUtils.NUM_INCOMPATIBLE)) {
+    else if (semCompatible.equals(SIM_INCOMPATIBLE) || genCompatible.equals(GEN_INCOMPATIBLE)
+        || numCompatible.equals(ResolverUtils.NUM_INCOMPATIBLE)) {
       compatFeatures.add("some.incompatible");
     }
     return compatFeatures;
@@ -586,7 +613,8 @@
     }
   }
 
-  public static String getSemanticCompatibilityFeature(MentionContext ec, DiscourseEntity de, TestSimilarityModel simModel) {
+  public static String getSemanticCompatibilityFeature(MentionContext ec, DiscourseEntity de,
+                                                       TestSimilarityModel simModel) {
     if (simModel != null) {
       double best = 0;
       for (Iterator<MentionContext> xi = de.getMentions(); xi.hasNext();) {
@@ -640,7 +668,4 @@
       return "u";
     }
   }
-  
-  
-
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SingletonNonReferentialResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SingletonNonReferentialResolver.java
index 746f97d..a1174a4 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SingletonNonReferentialResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SingletonNonReferentialResolver.java
@@ -33,7 +33,8 @@
     super(projectName, "nonref", mode);
   }
 
-  public static SingletonNonReferentialResolver getInstance(String modelName, ResolverMode mode) throws IOException {
+  public static SingletonNonReferentialResolver getInstance(String modelName, ResolverMode mode)
+      throws IOException {
     if (resolver == null) {
       resolver = new SingletonNonReferentialResolver(modelName, mode);
     }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SingularPronounResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SingularPronounResolver.java
index 6e84140..139f0d7 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SingularPronounResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SingularPronounResolver.java
@@ -40,7 +40,8 @@
     this.numSentencesBack = 2;
   }
 
-  public SingularPronounResolver(String projectName, ResolverMode m, NonReferentialResolver nonReferentialResolver) throws IOException {
+  public SingularPronounResolver(String projectName, ResolverMode m,
+                                 NonReferentialResolver nonReferentialResolver) throws IOException {
     super(projectName, "pmodel", m, 30,nonReferentialResolver);
     this.numSentencesBack = 2;
   }
@@ -48,7 +49,8 @@
   public boolean canResolve(MentionContext mention) {
     //System.err.println("MaxentSingularPronounResolver.canResolve: ec= ("+mention.id+") "+ mention.toText());
     String tag = mention.getHeadTokenTag();
-    return (tag != null && tag.startsWith("PRP") && ResolverUtils.singularThirdPersonPronounPattern.matcher(mention.getHeadTokenText()).matches());
+    return tag != null && tag.startsWith("PRP")
+        && ResolverUtils.singularThirdPersonPronounPattern.matcher(mention.getHeadTokenText()).matches();
   }
 
   @Override
@@ -109,7 +111,8 @@
     for (Iterator<MentionContext> ei = entity.getMentions(); ei.hasNext();) {
       MentionContext entityMention = ei.next();
       String tag = entityMention.getHeadTokenTag();
-      if (tag != null && tag.startsWith("PRP") && ResolverUtils.singularThirdPersonPronounPattern.matcher(mention.getHeadTokenText()).matches()) {
+      if (tag != null && tag.startsWith("PRP")
+          && ResolverUtils.singularThirdPersonPronounPattern.matcher(mention.getHeadTokenText()).matches()) {
         if (mentionGender == null) { //lazy initialization
           mentionGender = ResolverUtils.getPronounGender(mention.getHeadTokenText());
         }
@@ -125,7 +128,10 @@
   @Override
   protected boolean outOfRange(MentionContext mention, DiscourseEntity entity) {
     MentionContext cec = entity.getLastExtent();
-    //System.err.println("MaxentSingularPronounresolve.outOfRange: ["+entity.getLastExtent().toText()+" ("+entity.getId()+")] ["+mention.toText()+" ("+mention.getId()+")] entity.sentenceNumber=("+entity.getLastExtent().getSentenceNumber()+")-mention.sentenceNumber=("+mention.getSentenceNumber()+") > "+numSentencesBack);
+    //System.err.println("MaxentSingularPronounresolve.outOfRange: ["+entity.getLastExtent().toText()
+    // +" ("+entity.getId()+")] ["+mention.toText()+" ("+mention.getId()+")] entity.sentenceNumber=("
+    // +entity.getLastExtent().getSentenceNumber()+")-mention.sentenceNumber=("
+    // +mention.getSentenceNumber()+") > "+numSentencesBack);
     return (mention.getSentenceNumber() - cec.getSentenceNumber() > numSentencesBack);
   }
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SpeechPronounResolver.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SpeechPronounResolver.java
index bc5d2d4..7d080c6 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SpeechPronounResolver.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/SpeechPronounResolver.java
@@ -36,7 +36,8 @@
     preferFirstReferent = true;
   }
 
-  public SpeechPronounResolver(String projectName, ResolverMode m, NonReferentialResolver nrr) throws IOException {
+  public SpeechPronounResolver(String projectName, ResolverMode m, NonReferentialResolver nrr)
+      throws IOException {
     super(projectName,"fmodel", m, 30,nrr);
     showExclusions = false;
     preferFirstReferent = true;
@@ -79,7 +80,8 @@
 
   public boolean canResolve(MentionContext mention) {
     String tag = mention.getHeadTokenTag();
-    boolean fpp = tag != null && tag.startsWith("PRP") && ResolverUtils.speechPronounPattern.matcher(mention.getHeadTokenText()).matches();
+    boolean fpp = tag != null && tag.startsWith("PRP")
+        && ResolverUtils.speechPronounPattern.matcher(mention.getHeadTokenText()).matches();
     boolean pn = tag != null && tag.startsWith("NNP");
     return (fpp || pn);
   }
@@ -104,22 +106,22 @@
         return !canResolve(cec);
       }
     }
-    else if (mention.getHeadTokenTag().startsWith("PRP")){ // mention is a speech pronoun
+    else if (mention.getHeadTokenTag().startsWith("PRP")) { // mention is a speech pronoun
       // cec can be either a speech pronoun or a propernoun
       if (cec.getHeadTokenTag().startsWith("NNP")) {
         //exclude antecedents not in the same sentence when they are not pronoun
         return (mention.getSentenceNumber() - cec.getSentenceNumber() != 0);
       }
-      else if (cec.getHeadTokenTag().startsWith("PRP")){
+      else if (cec.getHeadTokenTag().startsWith("PRP")) {
         return false;
       }
       else {
-        System.err.println("Unexpected candidate exluded: "+cec.toText());
+        System.err.println("Unexpected candidate exluded: " + cec.toText());
         return true;
       }
     }
     else {
-      System.err.println("Unexpected mention exluded: "+mention.toText());
+      System.err.println("Unexpected mention exluded: " + mention.toText());
       return true;
     }
   }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/package-info.java b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/package-info.java
index fb59395..aaf0e45 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/package-info.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/resolver/package-info.java
@@ -18,4 +18,4 @@
 /**
  * Package related to resolution techniques for coreference resolution.
  */
-package opennlp.tools.coref.resolver;
\ No newline at end of file
+package opennlp.tools.coref.resolver;
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/Context.java b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/Context.java
index 174437c..ea6d819 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/Context.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/Context.java
@@ -42,15 +42,16 @@
   /** The token index in of the head word of this mention. */
   protected int headTokenIndex;
 
-  public Context(Span span, Span headSpan, int entityId, Parse parse, String extentType, String nameType, HeadFinder headFinder) {
+  public Context(Span span, Span headSpan, int entityId, Parse parse,
+                 String extentType, String nameType, HeadFinder headFinder) {
     super(span,headSpan,entityId,parse,extentType,nameType);
     init(headFinder);
   }
 
   public Context(Object[] tokens, String headToken, String headTag, String neType) {
     super(null,null,1,null,null,neType);
-    this.tokens =tokens;
-    this.headTokenIndex = tokens.length-1;
+    this.tokens = tokens;
+    this.headTokenIndex = tokens.length - 1;
     this.headTokenText = headToken;
     this.headTokenTag = headTag;
     this.synsets = getSynsetSet(this);
@@ -80,7 +81,7 @@
 
   public static Context[] constructContexts(Mention[] mentions,HeadFinder headFinder) {
     Context[] contexts = new Context[mentions.length];
-    for (int mi=0;mi<mentions.length;mi++) {
+    for (int mi = 0; mi < mentions.length;mi++) {
       contexts[mi] = new Context(mentions[mi],headFinder);
     }
     return contexts;
@@ -90,7 +91,7 @@
   @Override
   public String toString() {
     StringBuilder sb = new StringBuilder();
-    for (int ti=0,tl=tokens.length;ti<tl;ti++){
+    for (int ti = 0, tl = tokens.length; ti < tl; ti++) {
       sb.append(tokens[ti]).append(" ");
     }
     return sb.toString();
@@ -113,17 +114,16 @@
   }
 
   public static Context parseContext(String word) {
-      String[] parts = word.split("/");
-      if (parts.length == 2) {
-        String[] tokens = parts[0].split(" ");
-        return new Context(tokens,tokens[tokens.length-1], parts[1], null);
-      }
-      else if (parts.length == 3) {
-        String[] tokens = parts[0].split(" ");
-        return new Context(tokens,tokens[tokens.length-1], parts[1], parts[2]);
-      }
-      return null;
+    String[] parts = word.split("/");
+    if (parts.length == 2) {
+      String[] tokens = parts[0].split(" ");
+      return new Context(tokens, tokens[tokens.length - 1], parts[1], null);
+    } else if (parts.length == 3) {
+      String[] tokens = parts[0].split(" ");
+      return new Context(tokens, tokens[tokens.length - 1], parts[1], parts[2]);
     }
+    return null;
+  }
 
   private static Set<String> getSynsetSet(Context c) {
     Set<String> synsetSet = new HashSet<String>();
@@ -135,7 +135,7 @@
       if (senseKey != null) {
         synsetSet.add(senseKey);
         String[] synsets = dict.getParentSenseKeys(lemmas[li],"NN",0);
-        for (int si=0,sn=synsets.length;si<sn;si++) {
+        for (int si = 0, sn = synsets.length; si < sn;si++) {
           synsetSet.add(synsets[si]);
         }
       }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/GenderModel.java b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/GenderModel.java
index 9b93255..13e8300 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/GenderModel.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/GenderModel.java
@@ -31,22 +31,21 @@
 import java.util.List;
 import java.util.Set;
 
-//import opennlp.maxent.GIS;
+import opennlp.tools.coref.resolver.ResolverUtils;
 import opennlp.tools.ml.maxent.GIS;
-import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
 import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelReader;
+import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
+import opennlp.tools.ml.model.AbstractModel;
+import opennlp.tools.ml.model.Event;
+import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.HashList;
+import opennlp.tools.util.ObjectStreamUtils;
+
+//import opennlp.maxent.GIS;
 //import opennlp.maxent.io.SuffixSensitiveGISModelReader;
 //import opennlp.maxent.io.SuffixSensitiveGISModelWriter;
 //import opennlp.model.Event;
-import opennlp.tools.ml.model.Event;
-import opennlp.tools.ml.model.MaxentModel;
 //import opennlp.model.MaxentModel;
-import opennlp.tools.coref.resolver.ResolverUtils;
-import opennlp.tools.ml.model.AbstractModel;
-
-import opennlp.tools.ml.model.EventStream;
-import opennlp.tools.util.CollectionEventStream;
-import opennlp.tools.util.HashList;
 
 /**
  * Class which models the gender of a particular mentions and entities made up of mentions.
@@ -87,16 +86,17 @@
 
   private GenderModel(String modelName, boolean train) throws IOException {
     this.modelName = modelName;
-    maleNames = readNames(modelName+".mas");
-    femaleNames = readNames(modelName+".fem");
+    maleNames = readNames(modelName + ".mas");
+    femaleNames = readNames(modelName + ".fem");
     if (train) {
       events = new ArrayList<Event>();
     }
     else {
       //if (MaxentResolver.loadAsResource()) {
-      //  testModel = (new BinaryGISModelReader(new DataInputStream(this.getClass().getResourceAsStream(modelName)))).getModel();
+      //  testModel = (new BinaryGISModelReader(new DataInputStream(
+      //      this.getClass().getResourceAsStream(modelName)))).getModel();
       //}
-      testModel = (new SuffixSensitiveGISModelReader(new File(modelName+modelExtension))).getModel();
+      testModel = (new SuffixSensitiveGISModelReader(new File(modelName + modelExtension))).getModel();
       maleIndex = testModel.getIndex(GenderEnum.MALE.toString());
       femaleIndex = testModel.getIndex(GenderEnum.FEMALE.toString());
       neuterIndex = testModel.getIndex(GenderEnum.NEUTER.toString());
@@ -104,17 +104,17 @@
   }
 
   private List<String> getFeatures(Context np1) {
-    List<String> features = new ArrayList<String>();
+    List<String> features = new ArrayList<>();
     features.add("default");
     for (int ti = 0, tl = np1.getHeadTokenIndex(); ti < tl; ti++) {
       features.add("mw=" + np1.getTokens()[ti].toString());
     }
     features.add("hw=" + np1.getHeadTokenText());
-    features.add("n="+np1.getNameType());
+    features.add("n=" + np1.getNameType());
     if (np1.getNameType() != null && np1.getNameType().equals("person")) {
       Object[] tokens = np1.getTokens();
       //System.err.println("GenderModel.getFeatures: person name="+np1);
-      for (int ti=0;ti<np1.getHeadTokenIndex() || ti==0;ti++) {
+      for (int ti = 0; ti < np1.getHeadTokenIndex() || ti == 0; ti++) {
         String name = tokens[ti].toString().toLowerCase();
         if (femaleNames.contains(name)) {
           features.add("fem");
@@ -254,7 +254,8 @@
     for (String line = in.readLine(); line != null; line = in.readLine()) {
       String[] words = line.split(" ");
       double[] dist = model.genderDistribution(Context.parseContext(words[0]));
-      System.out.println("m="+dist[model.getMaleIndex()] + " f=" +dist[model.getFemaleIndex()]+" n="+dist[model.getNeuterIndex()]+" "+model.getFeatures(Context.parseContext(words[0])));
+      System.out.println("m=" + dist[model.getMaleIndex()] + " f=" + dist[model.getFemaleIndex()]
+          + " n=" + dist[model.getNeuterIndex()] + " " + model.getFeatures(Context.parseContext(words[0])));
     }
   }
 
@@ -268,16 +269,18 @@
 
   public void trainModel() throws IOException {
     if (debugOn) {
-      FileWriter writer = new FileWriter(modelName+".events");
-      for (Iterator<Event> ei=events.iterator();ei.hasNext();) {
+      FileWriter writer = new FileWriter(modelName + ".events");
+      for (Iterator<Event> ei = events.iterator();ei.hasNext();) {
         Event e = ei.next();
-        writer.write(e.toString()+"\n");
+        writer.write(e.toString() + "\n");
       }
       writer.close();
     }
+
     new SuffixSensitiveGISModelWriter(
            // GIS.trainModel((EventStream)new CollectionEventStream(events), true)).persist();
-            (AbstractModel) GIS.trainModel((EventStream)new CollectionEventStream(events), true), new File(modelName+modelExtension)).persist();
+            (AbstractModel) GIS.trainModel(ObjectStreamUtils.createObjectStream(events), true),
+            new File(modelName + modelExtension)).persist();
   }
 
   public int getFemaleIndex() {
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/MaxentCompatibilityModel.java b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/MaxentCompatibilityModel.java
index b6e00a5..217beb9 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/MaxentCompatibilityModel.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/MaxentCompatibilityModel.java
@@ -41,7 +41,9 @@
     Gender gender;
     double[] gdist = genModel.genderDistribution(c);
     if (debugOn) {
-      System.err.println("MaxentCompatibilityModel.computeGender: "+c.toString()+" m="+gdist[genModel.getMaleIndex()]+" f="+gdist[genModel.getFemaleIndex()]+" n="+gdist[genModel.getNeuterIndex()]);
+      System.err.println("MaxentCompatibilityModel.computeGender: "
+          + c.toString() + " m=" + gdist[genModel.getMaleIndex()] + " f="
+          + gdist[genModel.getFemaleIndex()] + " n=" + gdist[genModel.getNeuterIndex()]);
     }
     if (genModel.getMaleIndex() >= 0 && gdist[genModel.getMaleIndex()] > minGenderProb) {
       gender = new Gender(GenderEnum.MALE,gdist[genModel.getMaleIndex()]);
@@ -61,7 +63,8 @@
   public Number computeNumber(Context c) {
     double[] dist = numModel.numberDist(c);
     Number number;
-    //System.err.println("MaxentCompatibiltyResolver.computeNumber: "+c+" sing="+dist[numModel.getSingularIndex()]+" plural="+dist[numModel.getPluralIndex()]);
+    //System.err.println("MaxentCompatibiltyResolver.computeNumber: "+c+" sing="
+    // +dist[numModel.getSingularIndex()]+" plural="+dist[numModel.getPluralIndex()]);
     if (dist[numModel.getSingularIndex()] > minNumberProb) {
       number = new Number(NumberEnum.SINGULAR,dist[numModel.getSingularIndex()]);
     }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/NumberEnum.java b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/NumberEnum.java
index 693f894..8ec645e 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/NumberEnum.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/NumberEnum.java
@@ -44,8 +44,7 @@
   }
 
   @Override
-  public String toString(){
+  public String toString() {
     return name;
   }
-
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/NumberModel.java b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/NumberModel.java
index 02776a5..6f3be6d 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/NumberModel.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/NumberModel.java
@@ -22,19 +22,21 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+
+import opennlp.tools.coref.resolver.ResolverUtils;
 import opennlp.tools.ml.maxent.GIS;
-import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
 import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelReader;
+import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
+import opennlp.tools.ml.model.Event;
+import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.HashList;
+import opennlp.tools.util.ObjectStreamUtils;
+
 //import opennlp.maxent.GIS;
 //import opennlp.maxent.io.SuffixSensitiveGISModelReader;
 //import opennlp.maxent.io.SuffixSensitiveGISModelWriter;
 //import opennlp.model.Event;
-import opennlp.tools.ml.model.Event;
 //import opennlp.model.MaxentModel;
-import opennlp.tools.ml.model.MaxentModel;
-import opennlp.tools.coref.resolver.ResolverUtils;
-import opennlp.tools.util.CollectionEventStream;
-import opennlp.tools.util.HashList;
 
 /**
  * Class which models the number of particular mentions and the entities made up of mentions.
@@ -66,9 +68,10 @@
     }
     else {
       //if (MaxentResolver.loadAsResource()) {
-      //  testModel = (new PlainTextGISModelReader(new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream(modelName))))).getModel();
+      //  testModel = (new PlainTextGISModelReader(new BufferedReader(new InputStreamReader(
+      // this.getClass().getResourceAsStream(modelName))))).getModel();
       //}
-      testModel = (new SuffixSensitiveGISModelReader(new File(modelName+modelExtension))).getModel();
+      testModel = (new SuffixSensitiveGISModelReader(new File(modelName + modelExtension))).getModel();
       singularIndex = testModel.getIndex(NumberEnum.SINGULAR.toString());
       pluralIndex = testModel.getIndex(NumberEnum.PLURAL.toString());
     }
@@ -178,7 +181,8 @@
   }
 
   public void trainModel() throws IOException {
-    (new SuffixSensitiveGISModelWriter(GIS.trainModel(new CollectionEventStream(events),100,10),new File(modelName+modelExtension))).persist();
+    new SuffixSensitiveGISModelWriter(GIS.trainModel(
+        ObjectStreamUtils.createObjectStream(events),100,10),
+        new File(modelName + modelExtension)).persist();
   }
-
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/SimilarityModel.java b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/SimilarityModel.java
index 9a4b8d0..e54c427 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/SimilarityModel.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/SimilarityModel.java
@@ -29,20 +29,15 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import opennlp.tools.ml.maxent.GIS;
-import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
-import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelReader;
-//import opennlp.maxent.GIS;
-//import opennlp.maxent.io.SuffixSensitiveGISModelReader;
-//import opennlp.maxent.io.SuffixSensitiveGISModelWriter;
-import opennlp.tools.ml.model.Event;
-//import opennlp.model.MaxentModel;
-import opennlp.tools.ml.model.MaxentModel;
-//import opennlp.model.Event;
-//import opennlp.model.MaxentModel;
+
 import opennlp.tools.coref.resolver.ResolverUtils;
-import opennlp.tools.util.CollectionEventStream;
+import opennlp.tools.ml.maxent.GIS;
+import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelReader;
+import opennlp.tools.ml.maxent.io.SuffixSensitiveGISModelWriter;
+import opennlp.tools.ml.model.Event;
+import opennlp.tools.ml.model.MaxentModel;
 import opennlp.tools.util.HashList;
+import opennlp.tools.util.ObjectStreamUtils;
 
 /**
  * Models semantic similarity between two mentions and returns a score based on
@@ -74,7 +69,7 @@
       events = new ArrayList<Event>();
     }
     else {
-      testModel = (new SuffixSensitiveGISModelReader(new File(modelName+modelExtension))).getModel();
+      testModel = (new SuffixSensitiveGISModelReader(new File(modelName + modelExtension))).getModel();
       SAME_INDEX = testModel.getIndex(SAME);
     }
   }
@@ -82,12 +77,14 @@
   private void addEvent(boolean same, Context np1, Context np2) {
     if (same) {
       List<String> feats = getFeatures(np1, np2);
-      //System.err.println(SAME+" "+np1.headTokenText+" ("+np1.id+") -> "+np2.headTokenText+" ("+np2.id+") "+feats);
+      //System.err.println(SAME+" "+np1.headTokenText+" ("+np1.id+") -> "+np2.headTokenText+"
+      // ("+np2.id+") "+feats);
       events.add(new Event(SAME, feats.toArray(new String[feats.size()])));
     }
     else {
       List<String> feats = getFeatures(np1, np2);
-      //System.err.println(DIFF+" "+np1.headTokenText+" ("+np1.id+") -> "+np2.headTokenText+" ("+np2.id+") "+feats);
+      //System.err.println(DIFF+" "+np1.headTokenText+" ("+np1.id+") -> "+np2.headTokenText+"
+      // ("+np2.id+") "+feats);
       events.add(new Event(DIFF, feats.toArray(new String[feats.size()])));
     }
   }
@@ -152,7 +149,8 @@
    * with entity indicated by the specified key.
    */
   @SuppressWarnings("unchecked")
-  private Set<Context> constructExclusionSet(Integer entityKey, HashList entities, Map<Integer, Set<String>> headSets, Map<Integer, Set<String>> nameSets, List<Context> singletons) {
+  private Set<Context> constructExclusionSet(Integer entityKey, HashList entities, Map<Integer,
+      Set<String>> headSets, Map<Integer, Set<String>> nameSets, List<Context> singletons) {
     Set<Context> exclusionSet = new HashSet<Context>();
     Set<String> entityHeadSet = headSets.get(entityKey);
     Set<String> entityNameSet = nameSets.get(entityKey);
@@ -241,7 +239,8 @@
    *
    * @param entities A mapping between a key and a list of mentions.
    *
-   * @return a mapping between each key in the specified entity map and the name types associated with the each mention of that entity.
+   * @return a mapping between each key in the specified entity map and the name types associated
+   *         with the each mention of that entity.
    */
   @SuppressWarnings("unchecked")
   private Map<Integer, Set<String>> constructNameSets(HashList entities) {
@@ -333,7 +332,8 @@
             Context sec1 = allExtents.get(axi);
             axi = (axi + 1) % allExtents.size();
             if (!exclusionSet.contains(sec1)) {
-              if (debugOn) System.err.println(ec1.toString()+" "+entityNameSet+" "+sec1.toString()+" "+nameSets.get(sec1.getId()));
+              if (debugOn) System.err.println(ec1.toString() + " " + entityNameSet + " "
+                  + sec1.toString() + " " + nameSets.get(sec1.getId()));
               addEvent(false, ec1, sec1);
               break;
             }
@@ -345,15 +345,18 @@
   }
 
   /**
-   * Returns a number between 0 and 1 which represents the models belief that the specified mentions are compatible.
-   * Value closer to 1 are more compatible, while values closer to 0 are less compatible.
+   * Returns a number between 0 and 1 which represents the models belief that the specified
+   * mentions are compatible. Value closer to 1 are more compatible, while values closer
+   * to 0 are less compatible.
+   *
    * @param mention1 The first mention to be considered.
    * @param mention2 The second mention to be considered.
-   * @return a number between 0 and 1 which represents the models belief that the specified mentions are compatible.
+   * @return a number between 0 and 1 which represents the models belief that the specified
+   *         mentions are compatible.
    */
   public double compatible(Context mention1, Context mention2) {
     List<String> feats = getFeatures(mention1, mention2);
-    if (debugOn) System.err.println("SimilarityModel.compatible: feats="+feats);
+    if (debugOn) System.err.println("SimilarityModel.compatible: feats=" + feats);
     return (testModel.eval(feats.toArray(new String[feats.size()]))[SAME_INDEX]);
   }
 
@@ -363,16 +366,16 @@
    */
   public void trainModel() throws IOException {
     if (debugOn) {
-      FileWriter writer = new FileWriter(modelName+".events");
-      for (Iterator<Event> ei=events.iterator();ei.hasNext();) {
+      FileWriter writer = new FileWriter(modelName + ".events");
+      for (Iterator<Event> ei = events.iterator();ei.hasNext();) {
         Event e = ei.next();
-        writer.write(e.toString()+"\n");
+        writer.write(e.toString() + "\n");
       }
       writer.close();
     }
-    (new SuffixSensitiveGISModelWriter(GIS.trainModel(
-        new CollectionEventStream(events),100,10),
-        new File(modelName+modelExtension))).persist();
+    new SuffixSensitiveGISModelWriter(GIS.trainModel(
+        ObjectStreamUtils.createObjectStream(events),100,10),
+        new File(modelName + modelExtension)).persist();
   }
 
   private boolean isName(Context np) {
@@ -393,7 +396,7 @@
 
   private List<String> getNameCommonFeatures(Context name, Context common) {
     Set<String> synsets = common.getSynsets();
-    List<String> features = new ArrayList<String>(2 + synsets.size());
+    List<String> features = new ArrayList<>(2 + synsets.size());
     features.add("nn=" + name.getNameType() + "," + common.getNameType());
     features.add("nw=" + name.getNameType() + "," + common.getHeadTokenText().toLowerCase());
     for (Iterator<String> si = synsets.iterator(); si.hasNext();) {
@@ -610,7 +613,8 @@
       else if (isPronoun(np2)) {
         features.addAll(getNumberPronounFeatures(np1, np2));
       }
-      else if (isNumber(np2)) {}
+      else if (isNumber(np2)) {
+      }
       else {
         //System.err.println("unknown group for " + np1.headTokenText + " -> " + np2.headTokenText);
       }
@@ -634,7 +638,8 @@
     for (String line = in.readLine(); line != null; line = in.readLine()) {
       String[] words = line.split(" ");
       double p = model.compatible(Context.parseContext(words[0]), Context.parseContext(words[1]));
-      System.out.println(p + " " + model.getFeatures(Context.parseContext(words[0]), Context.parseContext(words[1])));
+      System.out.println(p + " " + model.getFeatures(Context.parseContext(words[0]),
+          Context.parseContext(words[1])));
     }
   }
 }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/package-info.java b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/package-info.java
index 535211a..21f59d1 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/coref/sim/package-info.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/coref/sim/package-info.java
@@ -18,4 +18,4 @@
 /**
  * Package related to the modeling mention similarity for coreference resolution.
  */
-package opennlp.tools.coref.sim;
\ No newline at end of file
+package opennlp.tools.coref.sim;
diff --git a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/FullParseCorefEnhancerStream.java b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/FullParseCorefEnhancerStream.java
index 0666843..a83aa9e 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/FullParseCorefEnhancerStream.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/FullParseCorefEnhancerStream.java
@@ -37,10 +37,10 @@
     this.parser = parser;
   }
   
-  static Parse createIncompleteParse(String tokens[]) {
+  static Parse createIncompleteParse(String[] tokens) {
     
     // produce text
-    Span tokenSpans[] = new Span[tokens.length];
+    Span[] tokenSpans = new Span[tokens.length];
     StringBuilder textBuilder = new StringBuilder();
     
     for (int i = 0; i < tokens.length; i++) {
@@ -60,7 +60,8 @@
     
     for (int i = 0; i < tokenSpans.length; i++) {
       Span tokenSpan = tokenSpans[i];
-      p.insert(new Parse(text, new Span(tokenSpan.getStart(), tokenSpan.getEnd()), AbstractBottomUpParser.TOK_NODE, 0, i));
+      p.insert(new Parse(text, new Span(tokenSpan.getStart(), tokenSpan.getEnd()),
+          AbstractBottomUpParser.TOK_NODE, 0, i));
     }
     
     return p;
@@ -78,7 +79,7 @@
       
       for (int i = 0; i < sentences.size(); i++) {
         
-        String sentence[] = sentences.get(i);
+        String[] sentence = sentences.get(i);
         
         Parse incompleteParse = createIncompleteParse(sentence);
         Parse p = parser.parse(incompleteParse);
diff --git a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/MucCorefContentHandler.java b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/MucCorefContentHandler.java
index d095b48..13e8360 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/MucCorefContentHandler.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/MucCorefContentHandler.java
@@ -130,7 +130,7 @@
   public void characters(CharSequence chars) {
     if (isInsideContentElement) {
       
-      String tokens [] = tokenizer.tokenize(chars.toString());
+      String[] tokens = tokenizer.tokenize(chars.toString());
       
       text.addAll(Arrays.asList(tokens));
     }
@@ -157,7 +157,7 @@
     
     if (MucElementNames.DOC_ELEMENT.equals(name)) {
       
-      for (CorefMention mentions[] : sample.getMentions()) {
+      for (CorefMention[] mentions : sample.getMentions()) {
         for (int i = 0; i < mentions.length; i++) {
           mentions[i].id = resolveId(mentions[i].id);
         }
diff --git a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/MucMentionInserterStream.java b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/MucMentionInserterStream.java
index 95b9905..84e8222 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/MucMentionInserterStream.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/MucMentionInserterStream.java
@@ -60,7 +60,7 @@
       int startOffset = p.toString().indexOf(min);
       int endOffset = startOffset + min.length();
       
-      Parse tokens[] = p.getTagNodes();
+      Parse[] tokens = p.getTagNodes();
       
       int beginToken = -1;
       int endToken = -1;
@@ -86,7 +86,7 @@
   
   public static boolean addMention(int id, Span mention, Parse[] tokens) {
 
-	boolean failed = false;
+    boolean failed = false;
     
     Parse startToken = tokens[mention.getStart()];
     Parse endToken = tokens[mention.getEnd() - 1];
@@ -128,7 +128,7 @@
       List<Parse> allParses = sample.getParses();
       
       for (int si = 0; si < allMentions.size(); si++) {
-        CorefMention mentions[] = allMentions.get(si);
+        CorefMention[] mentions = allMentions.get(si);
         Parse p = allParses.get(si);
         
         for (Mention extent : mentionFinder.getMentions(new DefaultParse(p, si))) {
@@ -139,7 +139,7 @@
           }
         }
         
-        Parse tokens[] = p.getTagNodes();
+        Parse[] tokens = p.getTagNodes();
         
         for (CorefMention mention : mentions) {
           Span min = getMinSpan(p, mention);
diff --git a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/NameFinderCorefEnhancerStream.java b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/NameFinderCorefEnhancerStream.java
index db350b9..93bc89e 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/NameFinderCorefEnhancerStream.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/NameFinderCorefEnhancerStream.java
@@ -32,11 +32,12 @@
  */
 public class NameFinderCorefEnhancerStream extends FilterObjectStream<RawCorefSample, RawCorefSample> {
 
-  private TokenNameFinder nameFinders[];
-  private String tags[];
+  private TokenNameFinder[] nameFinders;
+  private String[] tags;
   
   // TODO: Should be updated to use tag from span instead!
-  protected NameFinderCorefEnhancerStream(TokenNameFinder nameFinders[], String tags[], ObjectStream<RawCorefSample> samples) {
+  protected NameFinderCorefEnhancerStream(TokenNameFinder[] nameFinders, String[] tags,
+                                          ObjectStream<RawCorefSample> samples) {
     super(samples);
     this.nameFinders = nameFinders;
     this.tags = tags;
@@ -56,15 +57,15 @@
       
       for (Parse p : sample.getParses()) {
         
-        Parse parseTokens[] = p.getTagNodes();
-        String tokens[] = new String[parseTokens.length];
+        Parse[] parseTokens = p.getTagNodes();
+        String[] tokens = new String[parseTokens.length];
         
         for (int i = 0; i < tokens.length; i++) {
           tokens[i] = parseTokens[i].toString();
         }
         
         for (int i = 0; i < nameFinders.length; i++) {
-          Span names[] = nameFinders[i].find(tokens);
+          Span[] names = nameFinders[i].find(tokens);
           Parse.addNames(tags[i], names, parseTokens);
         }
         
diff --git a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/RawCorefSample.java b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/RawCorefSample.java
index d2ae672..ffb6596 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/RawCorefSample.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/RawCorefSample.java
@@ -28,8 +28,8 @@
  */
 public class RawCorefSample {
   
-  private List<String[]> texts = new ArrayList<String[]>();
-  private List<CorefMention[]> mentions = new ArrayList<CorefMention[]>();
+  private List<String[]> texts = new ArrayList<>();
+  private List<CorefMention[]> mentions = new ArrayList<>();
   
   private List<Parse> parses;
   
diff --git a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/ShallowParseCorefEnhancerStream.java b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/ShallowParseCorefEnhancerStream.java
index 05a06f5..fc5d696 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/formats/muc/ShallowParseCorefEnhancerStream.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/formats/muc/ShallowParseCorefEnhancerStream.java
@@ -34,7 +34,8 @@
   private final POSTagger posTagger;
   private final Chunker chunker;
   
-  public ShallowParseCorefEnhancerStream(POSTagger posTagger, Chunker chunker, ObjectStream<RawCorefSample> samples) {
+  public ShallowParseCorefEnhancerStream(POSTagger posTagger, Chunker chunker,
+                                         ObjectStream<RawCorefSample> samples) {
     super(samples);
     this.posTagger = posTagger;
     this.chunker = chunker;
@@ -50,22 +51,23 @@
       
       List<String[]> sentences = sample.getTexts();
       
-      for (String sentence[] : sentences) {
+      for (String[] sentence : sentences) {
         
         Parse p = FullParseCorefEnhancerStream.createIncompleteParse(sentence);
         p.setType(AbstractBottomUpParser.TOP_NODE);
         
-        Parse parseTokens[] = p.getChildren();
+        Parse[] parseTokens = p.getChildren();
         
         // construct incomplete parse here ..
-        String tags[] = posTagger.tag(sentence);
+        String[] tags = posTagger.tag(sentence);
         
         for (int i = 0; i < parseTokens.length; i++) {
-          p.insert(new Parse(p.getText(), parseTokens[i].getSpan(), tags[i], 1d, parseTokens[i].getHeadIndex()));
+          p.insert(new Parse(p.getText(), parseTokens[i].getSpan(), tags[i],
+              1d, parseTokens[i].getHeadIndex()));
         }
         
         // insert tags into incomplete parse
-        Span chunks[] = chunker.chunkAsSpans(sentence, tags); 
+        Span[] chunks = chunker.chunkAsSpans(sentence, tags);
         
         for (Span chunk : chunks) {
           if ("NP".equals(chunk.getType())) {
diff --git a/opennlp-coref/src/main/java/opennlp/tools/lang/english/CorefParse.java b/opennlp-coref/src/main/java/opennlp/tools/lang/english/CorefParse.java
new file mode 100644
index 0000000..6db343d
--- /dev/null
+++ b/opennlp-coref/src/main/java/opennlp/tools/lang/english/CorefParse.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package opennlp.tools.lang.english;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import opennlp.tools.coref.DiscourseEntity;
+import opennlp.tools.coref.mention.DefaultParse;
+import opennlp.tools.coref.mention.MentionContext;
+import opennlp.tools.parser.Parse;
+import opennlp.tools.parser.chunking.Parser;
+import opennlp.tools.util.Span;
+
+class CorefParse {
+
+  private Map<Parse, Integer> parseMap;
+  private List<Parse> parses;
+
+  public CorefParse(List<Parse> parses, DiscourseEntity[] entities) {
+    this.parses = parses;
+    parseMap = new HashMap<>();
+    for (int ei = 0, en = entities.length; ei < en;ei++) {
+      if (entities[ei].getNumMentions() > 1) {
+        for (Iterator<MentionContext> mi = entities[ei].getMentions(); mi.hasNext();) {
+          MentionContext mc = mi.next();
+          Parse mentionParse = ((DefaultParse) mc.getParse()).getParse();
+          parseMap.put(mentionParse,ei + 1);
+          //System.err.println("CorefParse: "+mc.getParse().hashCode()+" -> "+ (ei+1));
+        }
+      }
+    }
+  }
+
+  public void show() {
+    for (int pi = 0, pn = parses.size(); pi < pn; pi++) {
+      Parse p = parses.get(pi);
+      show(p);
+      System.out.println();
+    }
+  }
+
+  private void show(Parse p) {
+    int start;
+    start = p.getSpan().getStart();
+    if (!p.getType().equals(Parser.TOK_NODE)) {
+      System.out.print("(");
+      System.out.print(p.getType());
+      if (parseMap.containsKey(p)) {
+        System.out.print("#" + parseMap.get(p));
+      }
+      //System.out.print(p.hashCode()+"-"+parseMap.containsKey(p));
+      System.out.print(" ");
+    }
+    Parse[] children = p.getChildren();
+    for (int pi = 0, pn = children.length; pi < pn;pi++) {
+      Parse c = children[pi];
+      Span s = c.getSpan();
+      if (start < s.getStart()) {
+        System.out.print(p.getText().substring(start, s.getStart()));
+      }
+      show(c);
+      start = s.getEnd();
+    }
+    System.out.print(p.getText().substring(start, p.getSpan().getEnd()));
+    if (!p.getType().equals(Parser.TOK_NODE)) {
+      System.out.print(")");
+    }
+  }
+}
diff --git a/opennlp-coref/src/main/java/opennlp/tools/lang/english/TreebankLinker.java b/opennlp-coref/src/main/java/opennlp/tools/lang/english/TreebankLinker.java
index 2911e64..c27d579 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/lang/english/TreebankLinker.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/lang/english/TreebankLinker.java
@@ -23,10 +23,8 @@
 import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
+
 import java.util.List;
-import java.util.Map;
 
 import opennlp.tools.coref.DefaultLinker;
 import opennlp.tools.coref.DiscourseEntity;
@@ -34,11 +32,9 @@
 import opennlp.tools.coref.LinkerMode;
 import opennlp.tools.coref.mention.DefaultParse;
 import opennlp.tools.coref.mention.Mention;
-import opennlp.tools.coref.mention.MentionContext;
 import opennlp.tools.coref.mention.PTBMentionFinder;
 import opennlp.tools.parser.Parse;
-import opennlp.tools.parser.chunking.Parser;
-import opennlp.tools.util.Span;
+
 
 /**
  * This class perform coreference for treebank style parses.
@@ -60,7 +56,8 @@
     super(project,mode,useDiscourseModel);
   }
 
-  public TreebankLinker(String project, LinkerMode mode, boolean useDiscourseModel, double fixedNonReferentialProbability) throws IOException {
+  public TreebankLinker(String project, LinkerMode mode, boolean useDiscourseModel,
+                        double fixedNonReferentialProbability) throws IOException {
     super(project,mode,useDiscourseModel,fixedNonReferentialProbability);
   }
 
@@ -70,8 +67,8 @@
   }
 
   private static void showEntities(DiscourseEntity[] entities) {
-    for (int ei=0,en=entities.length;ei<en;ei++) {
-     System.out.println(ei+" "+entities[ei]);
+    for (int ei = 0, en = entities.length; ei < en;ei++) {
+      System.out.println(ei + " " + entities[ei]);
     }
   }
 
@@ -86,7 +83,7 @@
       System.exit(1);
     }
     BufferedReader in;
-    int ai =0;
+    int ai = 0;
     String dataDir = args[ai++];
     if (ai == args.length) {
       in = new BufferedReader(new InputStreamReader(System.in));
@@ -98,12 +95,13 @@
     int sentenceNumber = 0;
     List<Mention> document = new ArrayList<Mention>();
     List<Parse> parses = new ArrayList<Parse>();
-    for (String line=in.readLine();null != line;line = in.readLine()) {
+    for (String line = in.readLine();null != line;line = in.readLine()) {
       if (line.equals("")) {
-        DiscourseEntity[] entities = treebankLinker.getEntities(document.toArray(new Mention[document.size()]));
+        DiscourseEntity[] entities =
+            treebankLinker.getEntities(document.toArray(new Mention[document.size()]));
         //showEntities(entities);
         new CorefParse(parses,entities).show();
-        sentenceNumber=0;
+        sentenceNumber = 0;
         document.clear();
         parses.clear();
       }
@@ -112,7 +110,7 @@
         parses.add(p);
         Mention[] extents = treebankLinker.getMentionFinder().getMentions(new DefaultParse(p,sentenceNumber));
         //construct new parses for mentions which don't have constituents.
-        for (int ei=0,en=extents.length;ei<en;ei++) {
+        for (int ei = 0, en = extents.length; ei < en; ei++) {
           //System.err.println("PennTreebankLiner.main: "+ei+" "+extents[ei]);
 
           if (extents[ei].getParse() == null) {
@@ -130,64 +128,9 @@
     if (document.size() > 0) {
       DiscourseEntity[] entities = treebankLinker.getEntities(document.toArray(new Mention[document.size()]));
       //showEntities(entities);
-      (new CorefParse(parses,entities)).show();
+      (new CorefParse(parses, entities)).show();
     }
   }
 }
 
-class CorefParse {
 
-  private Map<Parse, Integer> parseMap;
-  private List<Parse> parses;
-
-  public CorefParse(List<Parse> parses, DiscourseEntity[] entities) {
-    this.parses = parses;
-    parseMap = new HashMap<Parse, Integer>();
-    for (int ei=0,en=entities.length;ei<en;ei++) {
-      if (entities[ei].getNumMentions() > 1) {
-        for (Iterator<MentionContext> mi = entities[ei].getMentions(); mi.hasNext();) {
-          MentionContext mc = mi.next();
-          Parse mentionParse = ((DefaultParse) mc.getParse()).getParse();
-          parseMap.put(mentionParse,ei+1);
-          //System.err.println("CorefParse: "+mc.getParse().hashCode()+" -> "+ (ei+1));
-        }
-      }
-    }
-  }
-
-  public void show() {
-    for (int pi=0,pn=parses.size();pi<pn;pi++) {
-      Parse p = parses.get(pi);
-      show(p);
-      System.out.println();
-    }
-  }
-
-  private void show(Parse p) {
-    int start;
-    start = p.getSpan().getStart();
-    if (!p.getType().equals(Parser.TOK_NODE)) {
-      System.out.print("(");
-      System.out.print(p.getType());
-      if (parseMap.containsKey(p)) {
-        System.out.print("#"+parseMap.get(p));
-      }
-      //System.out.print(p.hashCode()+"-"+parseMap.containsKey(p));
-      System.out.print(" ");
-    }
-    Parse[] children = p.getChildren();
-    for (int pi=0,pn=children.length;pi<pn;pi++) {
-      Parse c = children[pi];
-      Span s = c.getSpan();
-      if (start < s.getStart()) {
-        System.out.print(p.getText().substring(start, s.getStart()));
-      }
-      show(c);
-      start = s.getEnd();
-    }
-    System.out.print(p.getText().substring(start, p.getSpan().getEnd()));
-    if (!p.getType().equals(Parser.TOK_NODE)) {
-      System.out.print(")");
-    }
-  }
-}
diff --git a/opennlp-coref/src/main/java/opennlp/tools/lang/english/TreebankNameFinder.java b/opennlp-coref/src/main/java/opennlp/tools/lang/english/TreebankNameFinder.java
index a60c838..9c89fef 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/lang/english/TreebankNameFinder.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/lang/english/TreebankNameFinder.java
@@ -37,7 +37,8 @@
 @Deprecated
 public class TreebankNameFinder {
   
-  public static String[] NAME_TYPES = {"person", "organization", "location", "date", "time", "percentage", "money"};
+  public static String[] NAME_TYPES =
+      {"person", "organization", "location", "date", "time", "percentage", "money"};
 
   private NameFinderME nameFinder;
   
@@ -54,7 +55,8 @@
     }
   }
 
-  private static void processParse(TreebankNameFinder[] finders, String[] tags, BufferedReader input) throws IOException {
+  private static void processParse(TreebankNameFinder[] finders, String[] tags, BufferedReader input)
+      throws IOException {
     Span[][] nameSpans = new Span[finders.length][];
     
     for (String line = input.readLine(); null != line; line = input.readLine()) {
@@ -66,13 +68,14 @@
       Parse p = Parse.parseParse(line);
       Parse[] tagNodes = p.getTagNodes();
       String[] tokens = new String[tagNodes.length];
-      for (int ti=0;ti<tagNodes.length;ti++){
+      for (int ti = 0; ti < tagNodes.length; ti++) {
         tokens[ti] = tagNodes[ti].getCoveredText();
       }
       //System.err.println(java.util.Arrays.asList(tokens));
       for (int fi = 0, fl = finders.length; fi < fl; fi++) {
         nameSpans[fi] = finders[fi].nameFinder.find(tokens);
-        //System.err.println("english.NameFinder.processParse: "+tags[fi] + " " + java.util.Arrays.asList(nameSpans[fi]));
+        //System.err.println("english.NameFinder.processParse: "+tags[fi] + " "
+        // + java.util.Arrays.asList(nameSpans[fi]));
       }
       
       for (int fi = 0, fl = finders.length; fi < fl; fi++) {
@@ -89,7 +92,8 @@
    * @param input The input reader.
    * @throws IOException
    */
-  private static void processText(TreebankNameFinder[] finders, String[] tags, BufferedReader input) throws IOException {
+  private static void processText(TreebankNameFinder[] finders, String[] tags, BufferedReader input)
+      throws IOException {
     Span[][] nameSpans = new Span[finders.length][];
     String[][] nameOutcomes = new String[finders.length][];
     opennlp.tools.tokenize.Tokenizer tokenizer = new SimpleTokenizer();
@@ -105,7 +109,8 @@
       String[] tokens = Span.spansToStrings(spans,line);
       for (int fi = 0, fl = finders.length; fi < fl; fi++) {
         nameSpans[fi] = finders[fi].nameFinder.find(tokens);
-        //System.err.println("EnglighNameFinder.processText: "+tags[fi] + " " + java.util.Arrays.asList(finderTags[fi]));
+        //System.err.println("EnglighNameFinder.processText: "+tags[fi] + " "
+        // + java.util.Arrays.asList(finderTags[fi]));
         nameOutcomes[fi] = NameFinderEventStream.generateOutcomes(nameSpans[fi], null, tokens.length);
       }
       
@@ -113,8 +118,10 @@
         for (int fi = 0, fl = finders.length; fi < fl; fi++) {
           //check for end tags
           if (ti != 0) {
-            if ((nameOutcomes[fi][ti].equals(NameFinderME.START) || nameOutcomes[fi][ti].equals(NameFinderME.OTHER)) && 
-                (nameOutcomes[fi][ti - 1].equals(NameFinderME.START) || nameOutcomes[fi][ti - 1].equals(NameFinderME.CONTINUE))) {
+            if ((nameOutcomes[fi][ti].equals(NameFinderME.START)
+                || nameOutcomes[fi][ti].equals(NameFinderME.OTHER))
+                && (nameOutcomes[fi][ti - 1].equals(NameFinderME.START)
+                || nameOutcomes[fi][ti - 1].equals(NameFinderME.CONTINUE))) {
               output.append("</").append(tags[fi]).append(">");
             }
           }
@@ -133,7 +140,8 @@
       //final end tags
       if (tokens.length != 0) {
         for (int fi = 0, fl = finders.length; fi < fl; fi++) {
-          if (nameOutcomes[fi][tokens.length - 1].equals(NameFinderME.START) || nameOutcomes[fi][tokens.length - 1].equals(NameFinderME.CONTINUE)) {
+          if (nameOutcomes[fi][tokens.length - 1].equals(NameFinderME.START)
+              || nameOutcomes[fi][tokens.length - 1].equals(NameFinderME.CONTINUE)) {
             output.append("</").append(tags[fi]).append(">");
           }
         }
@@ -150,7 +158,8 @@
   public static void main(String[] args) throws IOException {
     if (args.length == 0) {
       System.err.println("Usage NameFinder -[parse] model1 model2 ... modelN < sentences");
-      System.err.println(" -parse: Use this option to find names on parsed input.  Un-tokenized sentence text is the default.");
+      System.err.println(" -parse: Use this option to find names on parsed input.  " +
+          "Un-tokenized sentence text is the default.");
       System.exit(1);
     }
     int ai = 0;
@@ -160,13 +169,13 @@
         parsedInput = true;
       }
       else {
-        System.err.println("Ignoring unknown option "+args[ai]);
+        System.err.println("Ignoring unknown option " + args[ai]);
       }
       ai++;
     }
-    TreebankNameFinder[] finders = new TreebankNameFinder[args.length-ai];
-    String[] names = new String[args.length-ai];
-    for (int fi=0; ai < args.length; ai++,fi++) {
+    TreebankNameFinder[] finders = new TreebankNameFinder[args.length - ai];
+    String[] names = new String[args.length - ai];
+    for (int fi = 0; ai < args.length; ai++,fi++) {
       String modelName = args[ai];
       finders[fi] = new TreebankNameFinder(new TokenNameFinderModel(new FileInputStream(modelName)));
       int nameStart = modelName.lastIndexOf(System.getProperty("file.separator")) + 1;
@@ -187,4 +196,4 @@
     //long t2 = System.currentTimeMillis();
     //System.err.println("Time "+(t2-t1));
   }
-}
\ No newline at end of file
+}
diff --git a/opennlp-coref/src/main/java/opennlp/tools/lang/english/package-info.java b/opennlp-coref/src/main/java/opennlp/tools/lang/english/package-info.java
index 9ab35ad..d06bd46 100644
--- a/opennlp-coref/src/main/java/opennlp/tools/lang/english/package-info.java
+++ b/opennlp-coref/src/main/java/opennlp/tools/lang/english/package-info.java
@@ -18,4 +18,4 @@
 /**
  * Package related to the processing of English data.
  */
-package opennlp.tools.lang.english;
\ No newline at end of file
+package opennlp.tools.lang.english;