This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opennlp.git


The following commit(s) were added to refs/heads/main by this push:
     new 4b120138 OPENNLP-1466 Convert the use of Collection#toArray(..) more 
performant version under modern JVMs
4b120138 is described below

commit 4b120138c107cfa57c43fba71c7feb9fbe5972aa
Author: Martin Wiesner <[email protected]>
AuthorDate: Fri Feb 17 22:29:46 2023 +0100

    OPENNLP-1466 Convert the use of Collection#toArray(..) more performant 
version under modern JVMs
    
    - converts codebase to use `Collection#toArray(0)`
---
 .../src/main/java/opennlp/bratann/NameFinderResource.java    |  2 +-
 .../opennlp/morfologik/tagdict/MorfologikTagDictionary.java  |  2 +-
 .../src/main/java/opennlp/tools/chunker/ChunkSample.java     |  8 ++++----
 .../main/java/opennlp/tools/chunker/ChunkSampleStream.java   |  4 ++--
 .../src/main/java/opennlp/tools/chunker/ChunkerME.java       |  2 +-
 .../src/main/java/opennlp/tools/cmdline/ArgumentParser.java  |  2 +-
 .../java/opennlp/tools/cmdline/EvaluationErrorPrinter.java   |  2 +-
 .../opennlp/tools/cmdline/FineGrainedReportListener.java     |  6 +++---
 .../tools/cmdline/chunker/ChunkerCrossValidatorTool.java     |  2 +-
 .../opennlp/tools/cmdline/chunker/ChunkerEvaluatorTool.java  |  2 +-
 .../tools/cmdline/doccat/DoccatCrossValidatorTool.java       |  2 +-
 .../opennlp/tools/cmdline/doccat/DoccatEvaluatorTool.java    |  2 +-
 .../langdetect/LanguageDetectorCrossValidatorTool.java       |  2 +-
 .../cmdline/langdetect/LanguageDetectorEvaluatorTool.java    |  2 +-
 .../cmdline/namefind/TokenNameFinderCrossValidatorTool.java  |  2 +-
 .../tools/cmdline/namefind/TokenNameFinderEvaluatorTool.java |  2 +-
 .../opennlp/tools/cmdline/namefind/TokenNameFinderTool.java  |  2 +-
 .../dictionary/serializer/DictionaryEntryPersistor.java      |  2 +-
 .../tools/doccat/DocumentCategorizerContextGenerator.java    |  2 +-
 .../src/main/java/opennlp/tools/doccat/DocumentSample.java   |  2 +-
 .../opennlp/tools/formats/BioNLP2004NameSampleStream.java    |  4 ++--
 .../java/opennlp/tools/formats/Conll02NameSampleStream.java  |  4 ++--
 .../java/opennlp/tools/formats/Conll03NameSampleStream.java  |  4 ++--
 .../java/opennlp/tools/formats/ConllXPOSSampleStream.java    |  4 ++--
 .../java/opennlp/tools/formats/EvalitaNameSampleStream.java  |  4 ++--
 .../java/opennlp/tools/formats/ad/ADNameSampleStream.java    |  4 ++--
 .../opennlp/tools/formats/ad/ADSentenceSampleStream.java     |  2 +-
 .../main/java/opennlp/tools/formats/ad/ADSentenceStream.java |  2 +-
 .../opennlp/tools/formats/brat/BratAnnotationStream.java     |  2 +-
 .../java/opennlp/tools/formats/brat/BratDocumentParser.java  |  2 +-
 .../tools/formats/conllu/ConlluSentenceSampleStream.java     |  2 +-
 .../irishsentencebank/IrishSentenceBankSentenceStream.java   |  2 +-
 .../tools/formats/letsmt/DetokenizeSentenceSampleStream.java |  2 +-
 .../java/opennlp/tools/formats/letsmt/LetsmtDocument.java    |  2 +-
 .../opennlp/tools/formats/letsmt/LetsmtSentenceStream.java   |  2 +-
 .../opennlp/tools/formats/masc/MascSentenceSampleStream.java |  2 +-
 .../tools/formats/moses/MosesSentenceSampleStream.java       |  2 +-
 .../opennlp/tools/formats/muc/MucNameContentHandler.java     |  4 ++--
 .../opennlp/tools/formats/nkjp/NKJPSentenceSampleStream.java |  2 +-
 .../tools/formats/ontonotes/OntoNotesNameSampleStream.java   |  4 ++--
 .../langdetect/DefaultLanguageDetectorContextGenerator.java  |  2 +-
 .../tools/lemmatizer/DefaultLemmatizerContextGenerator.java  |  2 +-
 .../java/opennlp/tools/lemmatizer/DictionaryLemmatizer.java  |  2 +-
 .../src/main/java/opennlp/tools/lemmatizer/LemmaSample.java  |  6 +++---
 .../java/opennlp/tools/lemmatizer/LemmaSampleStream.java     |  4 ++--
 .../src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java | 12 ++++++------
 opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java |  2 +-
 .../java/opennlp/tools/ml/model/DynamicEvalParameters.java   |  2 +-
 .../src/main/java/opennlp/tools/namefind/BilouCodec.java     |  2 +-
 .../src/main/java/opennlp/tools/namefind/BioCodec.java       |  2 +-
 .../opennlp/tools/namefind/DefaultNameContextGenerator.java  |  2 +-
 .../java/opennlp/tools/namefind/DictionaryNameFinder.java    |  2 +-
 .../src/main/java/opennlp/tools/namefind/NameFinderME.java   |  4 ++--
 .../src/main/java/opennlp/tools/namefind/NameSample.java     |  8 ++++----
 .../java/opennlp/tools/namefind/NameSampleTypeFilter.java    |  2 +-
 .../main/java/opennlp/tools/namefind/RegexNameFinder.java    |  4 ++--
 .../tools/namefind/TokenNameFinderCrossValidator.java        |  2 +-
 .../java/opennlp/tools/parser/AbstractBottomUpParser.java    |  4 ++--
 .../java/opennlp/tools/parser/AbstractParserEventStream.java |  8 ++++----
 .../java/opennlp/tools/parser/ChunkContextGenerator.java     |  2 +-
 .../main/java/opennlp/tools/parser/ChunkSampleStream.java    |  8 ++++----
 opennlp-tools/src/main/java/opennlp/tools/parser/Parse.java  |  8 ++++----
 .../src/main/java/opennlp/tools/parser/ParserEvaluator.java  |  2 +-
 .../opennlp/tools/parser/chunking/BuildContextGenerator.java |  2 +-
 .../opennlp/tools/parser/chunking/CheckContextGenerator.java |  2 +-
 .../tools/parser/treeinsert/AttachContextGenerator.java      |  2 +-
 .../tools/parser/treeinsert/BuildContextGenerator.java       |  2 +-
 .../tools/parser/treeinsert/CheckContextGenerator.java       |  2 +-
 .../tools/postag/ConfigurablePOSContextGenerator.java        |  2 +-
 .../opennlp/tools/postag/DefaultPOSContextGenerator.java     |  2 +-
 .../src/main/java/opennlp/tools/postag/POSSample.java        |  4 ++--
 .../src/main/java/opennlp/tools/postag/POSTaggerME.java      | 10 +++++-----
 .../opennlp/tools/sentdetect/NewlineSentenceDetector.java    |  2 +-
 .../main/java/opennlp/tools/sentdetect/SentenceSample.java   |  2 +-
 .../java/opennlp/tools/sentdetect/SentenceSampleStream.java  |  2 +-
 .../main/java/opennlp/tools/tokenize/SimpleTokenizer.java    |  2 +-
 .../src/main/java/opennlp/tools/tokenize/TokenSample.java    |  4 ++--
 .../java/opennlp/tools/tokenize/WhitespaceTokenizer.java     |  2 +-
 .../opennlp/tools/tokenize/lang/en/TokenSampleStream.java    |  2 +-
 .../tools/util/featuregen/AggregatedFeatureGenerator.java    |  2 +-
 .../util/featuregen/AggregatedFeatureGeneratorFactory.java   |  4 ++--
 .../java/opennlp/tools/util/featuregen/GeneratorFactory.java |  4 ++--
 .../java/opennlp/tools/chunker/DummyChunkSampleStream.java   | 12 ++++++------
 .../src/test/java/opennlp/tools/chunker/DummyChunker.java    |  4 ++--
 .../test/java/opennlp/tools/eval/SourceForgeModelEval.java   |  4 ++--
 .../src/test/java/opennlp/tools/langdetect/DummyFactory.java |  2 +-
 .../opennlp/tools/lemmatizer/DummyLemmaSampleStream.java     | 12 ++++++------
 .../opennlp/uima/doccat/AbstractDocumentCategorizer.java     |  2 +-
 .../main/java/opennlp/uima/namefind/AbstractNameFinder.java  |  2 +-
 opennlp-uima/src/main/java/opennlp/uima/parser/Parser.java   |  2 +-
 .../src/main/java/opennlp/uima/postag/POSTagger.java         |  2 +-
 91 files changed, 148 insertions(+), 148 deletions(-)

diff --git 
a/opennlp-brat-annotator/src/main/java/opennlp/bratann/NameFinderResource.java 
b/opennlp-brat-annotator/src/main/java/opennlp/bratann/NameFinderResource.java
index 0adbabb1..048c9b92 100644
--- 
a/opennlp-brat-annotator/src/main/java/opennlp/bratann/NameFinderResource.java
+++ 
b/opennlp-brat-annotator/src/main/java/opennlp/bratann/NameFinderResource.java
@@ -118,7 +118,7 @@ public class NameFinderResource {
           }
 
           NameAnn ann = new NameAnn();
-          ann.texts = textSegments.toArray(new String[textSegments.size()]);
+          ann.texts = textSegments.toArray(new String[0]);
           ann.offsets = spanSegments.toArray(new int[spanSegments.size()][]);
           ann.type = name.getType();
 
diff --git 
a/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikTagDictionary.java
 
b/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikTagDictionary.java
index 4df18e49..ac7d42b2 100644
--- 
a/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikTagDictionary.java
+++ 
b/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikTagDictionary.java
@@ -74,7 +74,7 @@ public class MorfologikTagDictionary implements TagDictionary 
{
         tags.add(aData.getTag().toString());
       }
       if (tags.size() > 0)
-        return tags.toArray(new String[tags.size()]);
+        return tags.toArray(new String[0]);
       return null;
     }
     return null;
diff --git a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java 
b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java
index 57a11768..7b7ab625 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java
@@ -74,21 +74,21 @@ public class ChunkSample implements Sample {
    * @return Retrieves the training sentence.
    */
   public String[] getSentence() {
-    return sentence.toArray(new String[sentence.size()]);
+    return sentence.toArray(new String[0]);
   }
 
   /**
    * @return Retrieves the POS Tags for the sentence.
    */
   public String[] getTags() {
-    return tags.toArray(new String[tags.size()]);
+    return tags.toArray(new String[0]);
   }
 
   /**
    * @return Retrieves the chunk tags in B-* I-* notation.
    */
   public String[] getPreds() {
-    return preds.toArray(new String[preds.size()]);
+    return preds.toArray(new String[0]);
   }
 
   /**
@@ -142,7 +142,7 @@ public class ChunkSample implements Sample {
       phrases.add(new Span(startIndex, aPreds.length, startTag));
     }
 
-    return phrases.toArray(new Span[phrases.size()]);
+    return phrases.toArray(new Span[0]);
   }
 
   private static void validateArguments(int sentenceSize, int tagsSize, int 
predsSize)
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSampleStream.java 
b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSampleStream.java
index 85e62bbc..be0d4303 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSampleStream.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSampleStream.java
@@ -62,8 +62,8 @@ public class ChunkSampleStream extends 
FilterObjectStream<String, ChunkSample> {
     }
 
     if (toks.size() > 0) {
-      return new ChunkSample(toks.toArray(new String[toks.size()]),
-          tags.toArray(new String[tags.size()]), preds.toArray(new 
String[preds.size()]));
+      return new ChunkSample(toks.toArray(new String[0]),
+          tags.toArray(new String[0]), preds.toArray(new String[0]));
     }
 
     return null;
diff --git a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java 
b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java
index 949266ad..ca831969 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java
@@ -105,7 +105,7 @@ public class ChunkerME implements Chunker {
     TokenTag[] tuples = TokenTag.create(toks, tags);
     bestSequence = model.bestSequence(tuples, new Object[] {}, 
contextGenerator, sequenceValidator);
     List<String> c = bestSequence.getOutcomes();
-    return c.toArray(new String[c.size()]);
+    return c.toArray(new String[0]);
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java
index b6bc1312..9cd512a5 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java
@@ -550,6 +550,6 @@ public class ArgumentParser {
       }
     }
 
-    return parameters.toArray(new String[parameters.size()]);
+    return parameters.toArray(new String[0]);
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/EvaluationErrorPrinter.java 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/EvaluationErrorPrinter.java
index c9f9b513..fd32ffb2 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/EvaluationErrorPrinter.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/EvaluationErrorPrinter.java
@@ -187,7 +187,7 @@ public abstract class EvaluationErrorPrinter<T> implements 
EvaluationMonitor<T>
    */
   private String print(List<Span> spans, String[] toks) {
     return Arrays.toString(Span.spansToStrings(
-        spans.toArray(new Span[spans.size()]), toks));
+        spans.toArray(new Span[0]), toks));
   }
 
   /**
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/FineGrainedReportListener.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/FineGrainedReportListener.java
index e773f182..27f7c8bb 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/FineGrainedReportListener.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/FineGrainedReportListener.java
@@ -174,7 +174,7 @@ public abstract class FineGrainedReportListener {
   private String matrixToString(SortedSet<String> tagset, double[][] data, 
boolean filter) {
     // we don't want to print trivial cases (acc=1)
     int initialIndex = 0;
-    String[] tags = tagset.toArray(new String[tagset.size()]);
+    String[] tags = tagset.toArray(new String[0]);
     StringBuilder sb = new StringBuilder();
     int minColumnSize = Integer.MIN_VALUE;
     String[][] matrix = new String[data.length][data[0].length];
@@ -893,8 +893,8 @@ public abstract class FineGrainedReportListener {
         }
         // populate the F-measure
         this.tagFMeasure.get(tag).updateScores(
-            reference.toArray(new Span[reference.size()]),
-            prediction.toArray(new Span[prediction.size()]));
+            reference.toArray(new Span[0]),
+            prediction.toArray(new Span[0]));
       }
     }
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerCrossValidatorTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerCrossValidatorTool.java
index f1cb962f..edd3d167 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerCrossValidatorTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerCrossValidatorTool.java
@@ -76,7 +76,7 @@ public final class ChunkerCrossValidatorTool
 
       validator = new ChunkerCrossValidator(params.getLang(), mlParams,
           chunkerFactory,
-          listeners.toArray(new ChunkerEvaluationMonitor[listeners.size()]));
+          listeners.toArray(new ChunkerEvaluationMonitor[0]));
       validator.evaluate(sampleStream, params.getFolds());
     }
     catch (IOException e) {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerEvaluatorTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerEvaluatorTool.java
index a49c399f..d1f2203d 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerEvaluatorTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerEvaluatorTool.java
@@ -74,7 +74,7 @@ public final class ChunkerEvaluatorTool
     }
 
     ChunkerEvaluator evaluator = new ChunkerEvaluator(new ChunkerME(model),
-        listeners.toArray(new ChunkerEvaluationMonitor[listeners.size()]));
+        listeners.toArray(new ChunkerEvaluationMonitor[0]));
 
     final PerformanceMonitor monitor = new PerformanceMonitor("sent");
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatCrossValidatorTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatCrossValidatorTool.java
index 53501578..4b1d8685 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatCrossValidatorTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatCrossValidatorTool.java
@@ -86,7 +86,7 @@ public final class DoccatCrossValidatorTool extends
         .createFeatureGenerators(params.getFeatureGenerators());
 
     DoccatEvaluationMonitor[] listenersArr = listeners
-        .toArray(new DoccatEvaluationMonitor[listeners.size()]);
+        .toArray(new DoccatEvaluationMonitor[0]);
 
     DoccatCrossValidator validator;
     try {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatEvaluatorTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatEvaluatorTool.java
index f355f381..24506143 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatEvaluatorTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatEvaluatorTool.java
@@ -91,7 +91,7 @@ public final class DoccatEvaluatorTool extends
 
     DocumentCategorizerEvaluator evaluator = new DocumentCategorizerEvaluator(
         new DocumentCategorizerME(model),
-        listeners.toArray(new DoccatEvaluationMonitor[listeners.size()]));
+        listeners.toArray(new DoccatEvaluationMonitor[0]));
 
     final PerformanceMonitor monitor = new PerformanceMonitor("doc");
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorCrossValidatorTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorCrossValidatorTool.java
index 0db9d74a..e05482f7 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorCrossValidatorTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorCrossValidatorTool.java
@@ -82,7 +82,7 @@ public final class LanguageDetectorCrossValidatorTool extends
     }
 
     LanguageDetectorEvaluationMonitor[] listenersArr = listeners
-        .toArray(new LanguageDetectorEvaluationMonitor[listeners.size()]);
+        .toArray(new LanguageDetectorEvaluationMonitor[0]);
 
     LanguageDetectorCrossValidator validator;
     try {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluatorTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluatorTool.java
index d944f21b..08b7eb7d 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluatorTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluatorTool.java
@@ -90,7 +90,7 @@ public final class LanguageDetectorEvaluatorTool extends
 
     LanguageDetectorEvaluator evaluator = new LanguageDetectorEvaluator(
         new LanguageDetectorME(model),
-        listeners.toArray(new 
LanguageDetectorEvaluationMonitor[listeners.size()]));
+        listeners.toArray(new LanguageDetectorEvaluationMonitor[0]));
 
     final PerformanceMonitor monitor = new PerformanceMonitor("doc");
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderCrossValidatorTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderCrossValidatorTool.java
index 81e0f6a6..b02915c0 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderCrossValidatorTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderCrossValidatorTool.java
@@ -143,7 +143,7 @@ public final class TokenNameFinderCrossValidatorTool
     try {
       validator = new TokenNameFinderCrossValidator(params.getLang(),
           params.getType(), mlParams, nameFinderFactory,
-          listeners.toArray(new 
TokenNameFinderEvaluationMonitor[listeners.size()]));
+          listeners.toArray(new TokenNameFinderEvaluationMonitor[0]));
       validator.evaluate(sampleStream, params.getFolds());
     } catch (IOException e) {
       throw createTerminationIOException(e);
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderEvaluatorTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderEvaluatorTool.java
index 87d91e18..49860fce 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderEvaluatorTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderEvaluatorTool.java
@@ -111,7 +111,7 @@ public final class TokenNameFinderEvaluatorTool
 
     TokenNameFinderEvaluator evaluator = new TokenNameFinderEvaluator(
         new NameFinderME(model),
-        listeners.toArray(new 
TokenNameFinderEvaluationMonitor[listeners.size()]));
+        listeners.toArray(new TokenNameFinderEvaluationMonitor[0]));
 
     final PerformanceMonitor monitor = new PerformanceMonitor("sent");
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java
 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java
index 159c6da1..cdcd00eb 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java
@@ -94,7 +94,7 @@ public final class TokenNameFinderTool extends 
BasicCmdLineTool {
           // Simple way to drop intersecting spans, otherwise the
           // NameSample is invalid
           Span[] reducedNames = NameFinderME.dropOverlappingSpans(
-                  names.toArray(new Span[names.size()]));
+                  names.toArray(new Span[0]));
 
           NameSample nameSample = new NameSample(whitespaceTokenizerLine,
                   reducedNames, false);
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/DictionaryEntryPersistor.java
 
b/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/DictionaryEntryPersistor.java
index 53b8f1f7..3394604c 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/DictionaryEntryPersistor.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/DictionaryEntryPersistor.java
@@ -139,7 +139,7 @@ public class DictionaryEntryPersistor {
       else if (ENTRY_ELEMENT.equals(localName)) {
 
         String[] tokens = mTokenList.toArray(
-            new String[mTokenList.size()]);
+                new String[0]);
 
         Entry entry = new Entry(new StringList(tokens), mAttributes);
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerContextGenerator.java
index 24dc288f..f1387fd7 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerContextGenerator.java
@@ -49,6 +49,6 @@ class DocumentCategorizerContextGenerator {
       context.addAll(extractedFeatures);
     }
 
-    return context.toArray(new String[context.size()]);
+    return context.toArray(new String[0]);
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java 
b/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
index f06efff6..cf57e9de 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
@@ -77,7 +77,7 @@ public class DocumentSample implements Sample {
    * @return Retrieves the text in a tokenized form.
    */
   public String[] getText() {
-    return text.toArray(new String[text.size()]);
+    return text.toArray(new String[0]);
   }
 
   /**
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/BioNLP2004NameSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/BioNLP2004NameSampleStream.java
index c586c980..14fc3d98 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/BioNLP2004NameSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/BioNLP2004NameSampleStream.java
@@ -178,8 +178,8 @@ public class BioNLP2004NameSampleStream implements 
ObjectStream<NameSample> {
       if (beginIndex != -1)
         names.add(new Span(beginIndex, endIndex, 
tags.get(beginIndex).substring(2)));
 
-      return new NameSample(sentence.toArray(new String[sentence.size()]),
-          names.toArray(new Span[names.size()]), isClearAdaptiveData);
+      return new NameSample(sentence.toArray(new String[0]),
+          names.toArray(new Span[0]), isClearAdaptiveData);
     }
     else if (line != null) {
       // Just filter out empty events, if two lines in a row are empty
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/Conll02NameSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/Conll02NameSampleStream.java
index 51887541..aa1853f5 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/Conll02NameSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/Conll02NameSampleStream.java
@@ -207,8 +207,8 @@ public class Conll02NameSampleStream implements 
ObjectStream<NameSample> {
       if (beginIndex != -1)
         names.add(extract(beginIndex, endIndex, tags.get(beginIndex)));
 
-      return new NameSample(sentence.toArray(new String[sentence.size()]),
-          names.toArray(new Span[names.size()]), isClearAdaptiveData);
+      return new NameSample(sentence.toArray(new String[0]),
+          names.toArray(new Span[0]), isClearAdaptiveData);
     }
     else if (line != null) {
       // Just filter out empty events, if two lines in a row are empty
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/Conll03NameSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/Conll03NameSampleStream.java
index 5ec77d88..9a651d8d 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/Conll03NameSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/Conll03NameSampleStream.java
@@ -182,8 +182,8 @@ public class Conll03NameSampleStream implements 
ObjectStream<NameSample> {
       if (beginIndex != -1)
         names.add(Conll02NameSampleStream.extract(beginIndex, endIndex, 
tags.get(beginIndex)));
 
-      return new NameSample(sentence.toArray(new String[sentence.size()]),
-          names.toArray(new Span[names.size()]), isClearAdaptiveData);
+      return new NameSample(sentence.toArray(new String[0]),
+          names.toArray(new Span[0]), isClearAdaptiveData);
     }
     else if (line != null) {
       // Just filter out empty events, if two lines in a row are empty
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXPOSSampleStream.java 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXPOSSampleStream.java
index 3bd0f9b3..98e283ac 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXPOSSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXPOSSampleStream.java
@@ -109,8 +109,8 @@ public class ConllXPOSSampleStream extends 
FilterObjectStream<String, POSSample>
       if (tokens.size() == 0)
         sample = read();
 
-      sample = new POSSample(tokens.toArray(new String[tokens.size()]),
-          tags.toArray(new String[tags.size()]));
+      sample = new POSSample(tokens.toArray(new String[0]),
+          tags.toArray(new String[0]));
     }
 
     return sample;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/EvalitaNameSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/EvalitaNameSampleStream.java
index 96ed3338..fe46b9e4 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/EvalitaNameSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/EvalitaNameSampleStream.java
@@ -204,8 +204,8 @@ public class EvalitaNameSampleStream implements 
ObjectStream<NameSample> {
       if (beginIndex != -1)
         names.add(extract(beginIndex, endIndex, tags.get(beginIndex)));
 
-      return new NameSample(sentence.toArray(new String[sentence.size()]),
-          names.toArray(new Span[names.size()]), isClearAdaptiveData);
+      return new NameSample(sentence.toArray(new String[0]),
+          names.toArray(new Span[0]), isClearAdaptiveData);
     }
     else if (line != null) {
       // Just filter out empty events, if two lines in a row are empty
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADNameSampleStream.java 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADNameSampleStream.java
index a7bab0d0..ab5b54f6 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADNameSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADNameSampleStream.java
@@ -211,8 +211,8 @@ public class ADNameSampleStream implements 
ObjectStream<NameSample> {
       List<Span> names = new ArrayList<>();
       process(root, sentence, names);
 
-      return new NameSample(sentence.toArray(new String[sentence.size()]),
-          names.toArray(new Span[names.size()]), clearData);
+      return new NameSample(sentence.toArray(new String[0]),
+          names.toArray(new Span[0]), clearData);
     }
     return null;
   }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceSampleStream.java
index 2ff31564..d5a3401b 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceSampleStream.java
@@ -122,7 +122,7 @@ public class ADSentenceSampleStream implements 
ObjectStream<SentenceSample> {
       doc = document.toString();
     }
 
-    return new SentenceSample(doc, sentences.toArray(new 
Span[sentences.size()]));
+    return new SentenceSample(doc, sentences.toArray(new Span[0]));
   }
 
   private boolean hasPunctuation(String text) {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceStream.java 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceStream.java
index 577a3a6c..0326e72d 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceStream.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceStream.java
@@ -396,7 +396,7 @@ public class ADSentenceStream extends 
FilterObjectStream<String, ADSentenceStrea
       }
 
       public TreeElement[] getElements() {
-        return elems.toArray(new TreeElement[elems.size()]);
+        return elems.toArray(new TreeElement[0]);
       }
 
       @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratAnnotationStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratAnnotationStream.java
index bad47c9e..e45797d4 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratAnnotationStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratAnnotationStream.java
@@ -98,7 +98,7 @@ public class BratAnnotationStream implements 
ObjectStream<BratAnnotation> {
             values[values.length - 1].getEnd()).toString();
 
         try {
-          return new SpanAnnotation(id, type, fragments.toArray(new 
Span[fragments.size()]), coveredText);
+          return new SpanAnnotation(id, type, fragments.toArray(new Span[0]), 
coveredText);
         }
         catch (IllegalArgumentException e) {
           throw new InvalidFormatException(e);
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocumentParser.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocumentParser.java
index bec36f8c..ea98b3f6 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocumentParser.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocumentParser.java
@@ -171,7 +171,7 @@ public class BratDocumentParser {
       }
 
       samples.add(new NameSample(sample.getId(), Span.spansToStrings(tokens, 
sentenceText),
-          names.toArray(new Span[names.size()]), null, samples.size() == 0));
+          names.toArray(new Span[0]), null, samples.size() == 0));
     }
 
     for (String id : entityIdSet) {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentenceSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentenceSampleStream.java
index 852e71eb..7b76fd10 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentenceSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentenceSampleStream.java
@@ -57,7 +57,7 @@ public class ConlluSentenceSampleStream extends 
FilterObjectStream<ConlluSentenc
 
     if (documentText.length() > 0) {
       documentText.setLength(documentText.length() - 1);
-      return new SentenceSample(documentText, sentenceSpans.toArray(new 
Span[sentenceSpans.size()]));
+      return new SentenceSample(documentText, sentenceSpans.toArray(new 
Span[0]));
     }
 
     return null;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankSentenceStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankSentenceStream.java
index e7c06d14..71c1b40e 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankSentenceStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankSentenceStream.java
@@ -62,7 +62,7 @@ class IrishSentenceBankSentenceStream implements 
ObjectStream<SentenceSample>  {
     }
 
     return new SentenceSample(sentencesString.toString(),
-        sentenceSpans.toArray(new Span[sentenceSpans.size()]));
+        sentenceSpans.toArray(new Span[0]));
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/DetokenizeSentenceSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/DetokenizeSentenceSampleStream.java
index a71fdad6..44763ad6 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/DetokenizeSentenceSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/DetokenizeSentenceSampleStream.java
@@ -71,7 +71,7 @@ public class DetokenizeSentenceSampleStream
         documentText.append(' ');
       }
 
-      return new SentenceSample(documentText, newSentenceSpans.toArray(new 
Span[newSentenceSpans.size()]));
+      return new SentenceSample(documentText, newSentenceSpans.toArray(new 
Span[0]));
     }
 
     return null;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtDocument.java 
b/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtDocument.java
index 5b02fa32..3977bdf6 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtDocument.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtDocument.java
@@ -99,7 +99,7 @@ public class LetsmtDocument {
           LetsmtSentence sentence = new LetsmtSentence();
 
           if (tokens.size() > 0) {
-            sentence.tokens = tokens.toArray(new String[tokens.size()]);
+            sentence.tokens = tokens.toArray(new String[0]);
             tokens = new ArrayList<>();
           }
           else {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtSentenceStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtSentenceStream.java
index d640b776..7b40823a 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtSentenceStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtSentenceStream.java
@@ -64,7 +64,7 @@ class LetsmtSentenceStream implements 
ObjectStream<SentenceSample>  {
     }
 
     return new SentenceSample(sentencesString.toString(),
-        sentenceSpans.toArray(new Span[sentenceSpans.size()]));
+        sentenceSpans.toArray(new Span[0]));
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascSentenceSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascSentenceSampleStream.java
index 39248390..86ac909e 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascSentenceSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascSentenceSampleStream.java
@@ -73,7 +73,7 @@ public class MascSentenceSampleStream extends 
FilterObjectStream<MascDocument, S
       if (documentText.length() > 0) {
         documentText.setLength(documentText.length() - 1);
         return new SentenceSample(documentText,
-            sentenceSpans.toArray(new Span[sentenceSpans.size()]));
+            sentenceSpans.toArray(new Span[0]));
       }
 
       return null;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/moses/MosesSentenceSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/moses/MosesSentenceSampleStream.java
index 7ca6291f..cd7b10f8 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/moses/MosesSentenceSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/moses/MosesSentenceSampleStream.java
@@ -60,7 +60,7 @@ public class MosesSentenceSampleStream extends 
FilterObjectStream<String, Senten
 
     if (sentenceSpans.size() > 0) {
       return new SentenceSample(sentencesString.toString(),
-          sentenceSpans.toArray(new Span[sentenceSpans.size()]));
+          sentenceSpans.toArray(new Span[0]));
     }
 
     return null;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java
index c9536e86..284a20b7 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java
@@ -127,8 +127,8 @@ public class MucNameContentHandler extends 
SgmlParser.ContentHandler {
     }
 
     if (MucElementNames.CONTENT_ELEMENTS.contains(name)) {
-      storedSamples.add(new NameSample(text.toArray(new String[text.size()]),
-          names.toArray(new Span[names.size()]), isClearAdaptiveData));
+      storedSamples.add(new NameSample(text.toArray(new String[0]),
+          names.toArray(new Span[0]), isClearAdaptiveData));
 
       if (isClearAdaptiveData) {
         isClearAdaptiveData = false;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSentenceSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSentenceSampleStream.java
index 5f6c0011..03ed8348 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSentenceSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSentenceSampleStream.java
@@ -94,7 +94,7 @@ public class NKJPSentenceSampleStream implements 
ObjectStream<SentenceSample> {
     }
 
     return new SentenceSample(sentencesString.toString(),
-      sentenceSpans.toArray(new Span[sentenceSpans.size()]));
+      sentenceSpans.toArray(new Span[0]));
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java
index bdafca83..bff97661 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java
@@ -161,8 +161,8 @@ public class OntoNotesNameSampleStream extends
           }
 
           nameSamples.add(new NameSample(cleanedTokens
-              .toArray(new String[cleanedTokens.size()]), entities
-              .toArray(new Span[entities.size()]), clearAdaptiveData));
+              .toArray(new String[0]), entities
+              .toArray(new Span[0]), clearAdaptiveData));
 
           clearAdaptiveData = false;
         }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java
index bbece483..6af56252 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java
@@ -59,6 +59,6 @@ public class DefaultLanguageDetectorContextGenerator 
implements LanguageDetector
     for (String token : model) {
       context.add(token);
     }
-    return context.toArray(new String[context.size()]);
+    return context.toArray(new String[0]);
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DefaultLemmatizerContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DefaultLemmatizerContextGenerator.java
index 0e720f7d..04007f91 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DefaultLemmatizerContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DefaultLemmatizerContextGenerator.java
@@ -113,7 +113,7 @@ public class DefaultLemmatizerContextGenerator implements 
LemmatizerContextGener
       features.add("d");
     }
 
-    return features.toArray(new String[features.size()]);
+    return features.toArray(new String[0]);
   }
 }
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DictionaryLemmatizer.java
 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DictionaryLemmatizer.java
index 53f53877..8b68cf67 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DictionaryLemmatizer.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DictionaryLemmatizer.java
@@ -171,7 +171,7 @@ public class DictionaryLemmatizer implements Lemmatizer {
     for (int i = 0; i < tokens.length; i++) {
       lemmas.add(this.lemmatize(tokens[i], postags[i]));
     }
-    return lemmas.toArray(new String[lemmas.size()]);
+    return lemmas.toArray(new String[0]);
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
index 455f145c..db1611ce 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
@@ -69,21 +69,21 @@ public class LemmaSample implements Sample {
    * @return Retrieves the tokens of a {@link LemmaSample}.
    */
   public String[] getTokens() {
-    return tokens.toArray(new String[tokens.size()]);
+    return tokens.toArray(new String[0]);
   }
 
   /**
    * @return Retrieves the postags of a {@link LemmaSample}.
    */
   public String[] getTags() {
-    return tags.toArray(new String[tags.size()]);
+    return tags.toArray(new String[0]);
   }
 
   /**
    * @return Retrieves the lemmas of a {@link LemmaSample}.
    */
   public String[] getLemmas() {
-    return lemmas.toArray(new String[lemmas.size()]);
+    return lemmas.toArray(new String[0]);
   }
 
   private void validateArguments(int tokensSize, int tagsSize, int lemmasSize)
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleStream.java 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleStream.java
index b09b05c4..f47986b5 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleStream.java
@@ -61,8 +61,8 @@ public class LemmaSampleStream extends 
FilterObjectStream<String, LemmaSample> {
       }
     }
     if (toks.size() > 0) {
-      return new LemmaSample(toks.toArray(new String[toks.size()]), 
tags.toArray(new String[tags.size()]),
-          preds.toArray(new String[preds.size()]));
+      return new LemmaSample(toks.toArray(new String[0]), tags.toArray(new 
String[0]),
+          preds.toArray(new String[0]));
     }
     else {
       return null;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java
index 33c34780..35617ab6 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java
@@ -102,8 +102,8 @@ public class LemmatizerME implements Lemmatizer {
   @Override
   public List<List<String>> lemmatize(List<String> toks,
       List<String> tags) {
-    String[] tokens = toks.toArray(new String[toks.size()]);
-    String[] posTags = tags.toArray(new String[tags.size()]);
+    String[] tokens = toks.toArray(new String[0]);
+    String[] posTags = tags.toArray(new String[0]);
     String[][] allLemmas = predictLemmas(LEMMA_NUMBER, tokens, posTags);
     List<List<String>> predictedLemmas = new ArrayList<>();
     for (String[] allLemma : allLemmas) {
@@ -123,7 +123,7 @@ public class LemmatizerME implements Lemmatizer {
   public String[] predictSES(String[] toks, String[] tags) {
     bestSequence = model.bestSequence(toks, new Object[] {tags}, 
contextGenerator, sequenceValidator);
     List<String> ses = bestSequence.getOutcomes();
-    return ses.toArray(new String[ses.size()]);
+    return ses.toArray(new String[0]);
   }
 
   /**
@@ -141,7 +141,7 @@ public class LemmatizerME implements Lemmatizer {
     String[][] allLemmas = new String[bestSequences.length][];
     for (int i = 0; i < allLemmas.length; i++) {
       List<String> ses = bestSequences[i].getOutcomes();
-      String[] sesArray = ses.toArray(new String[ses.size()]);
+      String[] sesArray = ses.toArray(new String[0]);
       allLemmas[i] = decodeLemmas(toks,sesArray);
     }
     return allLemmas;
@@ -164,7 +164,7 @@ public class LemmatizerME implements Lemmatizer {
       }
       lemmas.add(lemma);
     }
-    return lemmas.toArray(new String[lemmas.size()]);
+    return lemmas.toArray(new String[0]);
   }
 
   /**
@@ -184,7 +184,7 @@ public class LemmatizerME implements Lemmatizer {
       }
       sesList.add(ses);
     }
-    return sesList.toArray(new String[sesList.size()]);
+    return sesList.toArray(new String[0]);
   }
 
   /**
diff --git a/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java 
b/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java
index d5baaa30..d30771ab 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java
@@ -116,7 +116,7 @@ public class BeamSearch<T> implements 
SequenceClassificationModel<T> {
       for (int sc = 0; prev.size() > 0 && sc < sz; sc++) {
         Sequence top = prev.remove();
         List<String> tmpOutcomes = top.getOutcomes();
-        String[] outcomes = tmpOutcomes.toArray(new 
String[tmpOutcomes.size()]);
+        String[] outcomes = tmpOutcomes.toArray(new String[0]);
         String[] contexts = cg.getContext(i, sequence, outcomes, 
additionalContext);
         double[] scores;
         if (contextsCache != null) {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/ml/model/DynamicEvalParameters.java 
b/opennlp-tools/src/main/java/opennlp/tools/ml/model/DynamicEvalParameters.java
index c0350a67..e27f6fed 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/ml/model/DynamicEvalParameters.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/ml/model/DynamicEvalParameters.java
@@ -40,7 +40,7 @@ public class DynamicEvalParameters {
   }
 
   public Context[] getParams() {
-    return params.toArray(new Context[params.size()]);
+    return params.toArray(new Context[0]);
   }
 
   public int getNumOutcomes() {
diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/BilouCodec.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/BilouCodec.java
index b0d540e4..8b9a20bc 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/BilouCodec.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/BilouCodec.java
@@ -78,7 +78,7 @@ public class BilouCodec implements SequenceCodec<String> {
       }
     }
 
-    return spans.toArray(new Span[spans.size()]);
+    return spans.toArray(new Span[0]);
   }
 
   @Override
diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/BioCodec.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/BioCodec.java
index 5b63173f..622b228a 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/BioCodec.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/BioCodec.java
@@ -90,7 +90,7 @@ public class BioCodec implements SequenceCodec<String> {
       spans.add(new Span(start, end, extractNameType(c.get(c.size() - 1))));
     }
 
-    return spans.toArray(new Span[spans.size()]);
+    return spans.toArray(new Span[0]);
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/DefaultNameContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/DefaultNameContextGenerator.java
index 1c43d148..0f4a2d0b 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/DefaultNameContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/DefaultNameContextGenerator.java
@@ -147,6 +147,6 @@ public class DefaultNameContextGenerator implements 
NameContextGenerator {
       features.add("ppo=" + ppo);
     }
 
-    return features.toArray(new String[features.size()]);
+    return features.toArray(new String[0]);
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/DictionaryNameFinder.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/DictionaryNameFinder.java
index 4c85a182..4f050e5f 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/DictionaryNameFinder.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/DictionaryNameFinder.java
@@ -90,7 +90,7 @@ public class DictionaryNameFinder implements TokenNameFinder {
         offsetFrom += nameFound.length() - 1;
       }
     }
-    return namesFound.toArray(new Span[namesFound.size()]);
+    return namesFound.toArray(new Span[0]);
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
index 7b563af9..720a8fb0 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
@@ -134,7 +134,7 @@ public class NameFinderME implements TokenNameFinder {
 
     List<String> c = bestSequence.getOutcomes();
 
-    contextGenerator.updateAdaptiveData(tokens, c.toArray(new 
String[c.size()]));
+    contextGenerator.updateAdaptiveData(tokens, c.toArray(new String[0]));
     Span[] spans = seqCodec.decode(c);
     spans = setProbs(spans);
     return spans;
@@ -333,6 +333,6 @@ public class NameFinderME implements TokenNameFinder {
       lastSpan = span;
     }
 
-    return sortedSpans.toArray(new Span[sortedSpans.size()]);
+    return sortedSpans.toArray(new Span[0]);
   }
 }
diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
index 19577b7f..497271d9 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
@@ -135,14 +135,14 @@ public class NameSample implements Sample {
    * @return Retrieves the sentence in tokenized form.
    */
   public String[] getSentence() {
-    return sentence.toArray(new String[sentence.size()]);
+    return sentence.toArray(new String[0]);
   }
 
   /**
    * @return Retrieves the {@link Span names}.
    */
   public Span[] getNames() {
-    return names.toArray(new Span[names.size()]);
+    return names.toArray(new Span[0]);
   }
 
 
@@ -330,8 +330,8 @@ public class NameSample implements Sample {
         wordIndex++;
       }
     }
-    String[] sentence = tokenList.toArray(new String[tokenList.size()]);
-    Span[] names = nameList.toArray(new Span[nameList.size()]);
+    String[] sentence = tokenList.toArray(new String[0]);
+    Span[] names = nameList.toArray(new Span[0]);
 
     return new NameSample(sentence, names, clearAdaptiveData);
   }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java
index 84f5cca2..4b3f6228 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java
@@ -73,7 +73,7 @@ public class NameSampleTypeFilter extends 
FilterObjectStream<NameSample, NameSam
       }
 
       return new NameSample(sample.getId(), sample.getSentence(),
-          filteredNames.toArray(new Span[filteredNames.size()]), null, 
sample.isClearAdaptiveDataSet());
+          filteredNames.toArray(new Span[0]), null, 
sample.isClearAdaptiveDataSet());
     }
     else {
       return null;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/RegexNameFinder.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/RegexNameFinder.java
index a5e6193a..13007aa5 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/RegexNameFinder.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/RegexNameFinder.java
@@ -142,7 +142,7 @@ public final class RegexNameFinder implements 
TokenNameFinder {
       }
     }
 
-    return annotations.toArray(new Span[annotations.size()]);
+    return annotations.toArray(new Span[0]);
   }
 
   /**
@@ -177,7 +177,7 @@ public final class RegexNameFinder implements 
TokenNameFinder {
       }
     }
 
-    return annotations.toArray(new Span[annotations.size()]);
+    return annotations.toArray(new Span[0]);
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java
index 8e5bad90..d5e1f031 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java
@@ -98,7 +98,7 @@ public class TokenNameFinderCrossValidator {
         beginSample = null;
       }
 
-      return new DocumentSample(document.toArray(new 
NameSample[document.size()]));
+      return new DocumentSample(document.toArray(new NameSample[0]));
     }
 
     @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java
index 8bee7fb8..485de614 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java
@@ -243,7 +243,7 @@ public abstract class AbstractBottomUpParser implements 
Parser {
       return chunks;
     }
     //System.err.println("collapsedPunctuation: 
collapsedParses"+collapsedParses);
-    return collapsedParses.toArray(new Parse[collapsedParses.size()]);
+    return collapsedParses.toArray(new Parse[0]);
   }
 
 
@@ -363,7 +363,7 @@ public abstract class AbstractBottomUpParser implements 
Parser {
         topParses.add(tp);
         //parses.remove(tp);
       }
-      return topParses.toArray(new Parse[topParses.size()]);
+      return topParses.toArray(new Parse[0]);
     }
   }
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractParserEventStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractParserEventStream.java
index 6a9f8109..2d47dcb5 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractParserEventStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractParserEventStream.java
@@ -99,7 +99,7 @@ public abstract class AbstractParserEventStream extends 
opennlp.tools.util.Abstr
   public static Parse[] getInitialChunks(Parse p) {
     List<Parse> chunks = new ArrayList<>();
     getInitialChunks(p, chunks);
-    return chunks.toArray(new Parse[chunks.size()]);
+    return chunks.toArray(new Parse[0]);
   }
 
   private static void getInitialChunks(Parse p, List<Parse> ichunks) {
@@ -162,8 +162,8 @@ public abstract class AbstractParserEventStream extends 
opennlp.tools.util.Abstr
     }
     for (int ti = 0, tl = toks.size(); ti < tl; ti++) {
       chunkEvents.add(new Event(preds.get(ti),
-          chunkerContextGenerator.getContext(ti, toks.toArray(new 
String[toks.size()]),
-          tags.toArray(new String[tags.size()]), preds.toArray(new 
String[preds.size()]))));
+          chunkerContextGenerator.getContext(ti, toks.toArray(new String[0]),
+          tags.toArray(new String[0]), preds.toArray(new String[0]))));
     }
   }
 
@@ -184,7 +184,7 @@ public abstract class AbstractParserEventStream extends 
opennlp.tools.util.Abstr
     }
     for (int ti = 0, tl = toks.size(); ti < tl; ti++) {
       tagEvents.add(new Event(preds.get(ti), tagContextGenerator.getContext(ti,
-          toks.toArray(new String[toks.size()]), preds.toArray(new 
String[preds.size()]), null)));
+          toks.toArray(new String[0]), preds.toArray(new String[0]), null)));
     }
   }
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkContextGenerator.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkContextGenerator.java
index 076ee68e..0b1b8505 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkContextGenerator.java
@@ -177,7 +177,7 @@ public class ChunkContextGenerator implements 
ChunkerContextGenerator {
     features.add(ctbo0 + "," + ct1);
     features.add(ct0 + "," + ctbo1);
     features.add(ctbo0 + "," + ctbo1);
-    String[] contexts = features.toArray(new String[features.size()]);
+    String[] contexts = features.toArray(new String[0]);
     if (contextsCache != null) {
       contextsCache.put(cacheKey,contexts);
     }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkSampleStream.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkSampleStream.java
index e7ee6634..356155d5 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkSampleStream.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkSampleStream.java
@@ -64,7 +64,7 @@ public class ChunkSampleStream extends 
FilterObjectStream<Parse, ChunkSample> {
   public static Parse[] getInitialChunks(Parse p) {
     List<Parse> chunks = new ArrayList<>();
     getInitialChunks(p, chunks);
-    return chunks.toArray(new Parse[chunks.size()]);
+    return chunks.toArray(new Parse[0]);
   }
 
   @Override
@@ -98,9 +98,9 @@ public class ChunkSampleStream extends 
FilterObjectStream<Parse, ChunkSample> {
         }
       }
 
-      return new ChunkSample(toks.toArray(new String[toks.size()]),
-          tags.toArray(new String[tags.size()]),
-          preds.toArray(new String[preds.size()]));
+      return new ChunkSample(toks.toArray(new String[0]),
+          tags.toArray(new String[0]),
+          preds.toArray(new String[0]));
     }
     else {
       return null;
diff --git a/opennlp-tools/src/main/java/opennlp/tools/parser/Parse.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/Parse.java
index 185ec93f..a681cb8d 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/parser/Parse.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/parser/Parse.java
@@ -476,7 +476,7 @@ public class Parse implements Cloneable, Comparable<Parse> {
    * @return Retrieves the {@link Parse child constituents} of this 
constituent.
    */
   public Parse[] getChildren() {
-    return parts.toArray(new Parse[parts.size()]);
+    return parts.toArray(new Parse[0]);
   }
 
   /**
@@ -732,7 +732,7 @@ public class Parse implements Cloneable, Comparable<Parse> {
       for (Parse c : parts) {
         c.updateHeads(rules);
       }
-      this.head = rules.getHead(parts.toArray(new Parse[parts.size()]), type);
+      this.head = rules.getHead(parts.toArray(new Parse[0]), type);
       if (head == null) {
         head = this;
       }
@@ -932,7 +932,7 @@ public class Parse implements Cloneable, Comparable<Parse> {
         nodes.addAll(0,p.parts);
       }
     }
-    return tags.toArray(new Parse[tags.size()]);
+    return tags.toArray(new Parse[0]);
   }
 
   public Parse[] getTokenNodes() {
@@ -947,7 +947,7 @@ public class Parse implements Cloneable, Comparable<Parse> {
         nodes.addAll(0, p.parts);
       }
     }
-    return tokens.toArray(new Parse[tokens.size()]);
+    return tokens.toArray(new Parse[0]);
   }
 
   /**
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/ParserEvaluator.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/ParserEvaluator.java
index e8fc6db8..380c9284 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/parser/ParserEvaluator.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/parser/ParserEvaluator.java
@@ -94,7 +94,7 @@ public class ParserEvaluator extends Evaluator<Parse> {
       }
     }
 
-    return consts.toArray(new Span[consts.size()]);
+    return consts.toArray(new Span[0]);
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/BuildContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/BuildContextGenerator.java
index c5930604..bce042a5 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/BuildContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/BuildContextGenerator.java
@@ -311,6 +311,6 @@ public class BuildContextGenerator extends 
AbstractContextGenerator {
         }
       }
     }
-    return features.toArray(new String[features.size()]);
+    return features.toArray(new String[0]);
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/CheckContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/CheckContextGenerator.java
index 8a94dcb7..28af995c 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/CheckContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/CheckContextGenerator.java
@@ -114,6 +114,6 @@ public class CheckContextGenerator extends 
AbstractContextGenerator {
     surround(p1, 1, type, p1s, features);
     surround(p2, 2, type, p2s, features);
 
-    return features.toArray(new String[features.size()]);
+    return features.toArray(new String[0]);
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java
index 28fdac9c..6bc4d5c5 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java
@@ -163,6 +163,6 @@ public class AttachContextGenerator extends 
AbstractContextGenerator {
 
       }
     }
-    return features.toArray(new String[features.size()]);
+    return features.toArray(new String[0]);
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/BuildContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/BuildContextGenerator.java
index 067f1b29..3d40060c 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/BuildContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/BuildContextGenerator.java
@@ -150,7 +150,7 @@ public class BuildContextGenerator extends 
AbstractContextGenerator {
       features.add(EOS + "," + consbop0);
     }
 
-    return features.toArray(new String[features.size()]);
+    return features.toArray(new String[0]);
   }
 
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/CheckContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/CheckContextGenerator.java
index f0345eaa..21cb19eb 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/CheckContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/CheckContextGenerator.java
@@ -123,7 +123,7 @@ public class CheckContextGenerator extends 
AbstractContextGenerator {
     surround(p1, 1, type, p1s, features);
     surround(p2, 2, type, p2s, features);
 
-    return features.toArray(new String[features.size()]);
+    return features.toArray(new String[0]);
   }
 
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/postag/ConfigurablePOSContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/postag/ConfigurablePOSContextGenerator.java
index 1ae7c9fe..0f21429e 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/postag/ConfigurablePOSContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/postag/ConfigurablePOSContextGenerator.java
@@ -109,7 +109,7 @@ public class ConfigurablePOSContextGenerator implements 
POSContextGenerator {
 
     featureGenerator.createFeatures(e, tokens, index, tags);
 
-    String[] contexts = e.toArray(new String[e.size()]);
+    String[] contexts = e.toArray(new String[0]);
     if (contextsCache != null) {
       contextsCache.put(cacheKey, contexts);
     }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/postag/DefaultPOSContextGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/postag/DefaultPOSContextGenerator.java
index 3c36dc5e..87ea1bb9 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/postag/DefaultPOSContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/postag/DefaultPOSContextGenerator.java
@@ -212,7 +212,7 @@ public class DefaultPOSContextGenerator implements 
POSContextGenerator {
         e.add("nn=" + nextnext);
       }
     }
-    String[] contexts = e.toArray(new String[e.size()]);
+    String[] contexts = e.toArray(new String[0]);
     if (contextsCache != null) {
       contextsCache.put(cacheKey,contexts);
     }
diff --git a/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java 
b/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java
index 1367344a..eff4db1d 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java
@@ -115,14 +115,14 @@ public class POSSample implements Sample {
    * @return Retrieves the sentence as array.
    */
   public String[] getSentence() {
-    return sentence.toArray(new String[sentence.size()]);
+    return sentence.toArray(new String[0]);
   }
 
   /**
    * @return Retrieves the tags as array.
    */
   public String[] getTags() {
-    return tags.toArray(new String[tags.size()]);
+    return tags.toArray(new String[0]);
   }
 
   /**
diff --git a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java 
b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java
index a777691a..c011bdca 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java
@@ -148,7 +148,7 @@ public class POSTaggerME implements POSTagger {
   public String[] tag(String[] sentence, Object[] additionalContext) {
     bestSequence = model.bestSequence(sentence, additionalContext, contextGen, 
sequenceValidator);
     List<String> t = bestSequence.getOutcomes();
-    return t.toArray(new String[t.size()]);
+    return t.toArray(new String[0]);
   }
 
   /**
@@ -165,7 +165,7 @@ public class POSTaggerME implements POSTagger {
     String[][] tags = new String[bestSequences.length][];
     for (int si = 0; si < tags.length; si++) {
       List<String> t = bestSequences[si].getOutcomes();
-      tags[si] = t.toArray(new String[t.size()]);
+      tags[si] = t.toArray(new String[0]);
     }
     return tags;
   }
@@ -207,8 +207,8 @@ public class POSTaggerME implements POSTagger {
       MaxentModel posModel = modelPackage.getPosModel();
 
       double[] probs = posModel.eval(contextGen.getContext(index,
-          words.toArray(new String[words.size()]),
-          tags.toArray(new String[tags.size()]),null));
+          words.toArray(new String[0]),
+          tags.toArray(new String[0]),null));
 
       String[] orderedTags = new String[probs.length];
       for (int i = 0; i < probs.length; i++) {
@@ -376,7 +376,7 @@ public class POSTaggerME implements POSTagger {
       }
       if (tagsForWord.size() > 0) {
         dict.put(wordEntry.getKey(),
-            tagsForWord.toArray(new String[tagsForWord.size()]));
+            tagsForWord.toArray(new String[0]));
       }
     }
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/NewlineSentenceDetector.java
 
b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/NewlineSentenceDetector.java
index 9ba1641e..1f50326b 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/NewlineSentenceDetector.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/NewlineSentenceDetector.java
@@ -62,6 +62,6 @@ public class NewlineSentenceDetector implements 
SentenceDetector {
       }
     }
 
-    return sentences.toArray(new Span[sentences.size()]);
+    return sentences.toArray(new Span[0]);
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java 
b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java
index e00382ba..12dc9d20 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java
@@ -88,7 +88,7 @@ public class SentenceSample implements Sample {
    * @return the {@link Span spans} of the sentences in a document.
    */
   public Span[] getSentences() {
-    return sentences.toArray(new Span[sentences.size()]);
+    return sentences.toArray(new Span[0]);
   }
 
   // TODO: This one must output the tags!
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSampleStream.java
index d073af2b..a419a6d3 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSampleStream.java
@@ -60,7 +60,7 @@ public class SentenceSampleStream extends 
FilterObjectStream<String, SentenceSam
 
     if (sentenceSpans.size() > 0) {
       return new SentenceSample(sentencesString.toString(),
-          sentenceSpans.toArray(new Span[sentenceSpans.size()]));
+          sentenceSpans.toArray(new Span[0]));
     }
     return null;
   }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/tokenize/SimpleTokenizer.java 
b/opennlp-tools/src/main/java/opennlp/tools/tokenize/SimpleTokenizer.java
index b2b1c173..a2f5c14f 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/tokenize/SimpleTokenizer.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/tokenize/SimpleTokenizer.java
@@ -108,7 +108,7 @@ public class SimpleTokenizer extends AbstractTokenizer {
     if (charType != CharacterEnum.WHITESPACE) {
       tokens.add(new Span(start, sl));
     }
-    return tokens.toArray(new Span[tokens.size()]);
+    return tokens.toArray(new Span[0]);
   }
 
   private boolean isLineSeparator(char character) {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java 
b/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
index 3f3aab9c..93ac2873 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
@@ -120,7 +120,7 @@ public class TokenSample implements Sample {
    * @return Retrieves the token {@link Span spans}.
    */
   public Span[] getTokenSpans() {
-    return tokenSpans.toArray(new Span[tokenSpans.size()]);
+    return tokenSpans.toArray(new Span[0]);
   }
 
   @Override
@@ -219,7 +219,7 @@ public class TokenSample implements Sample {
     }
 
     return new TokenSample(untaggedSampleString.toString(), 
realTokenSpans.toArray(
-        new Span[realTokenSpans.size()]));
+            new Span[0]));
   }
 
   @Override
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/tokenize/WhitespaceTokenizer.java 
b/opennlp-tools/src/main/java/opennlp/tools/tokenize/WhitespaceTokenizer.java
index 7209a754..b9756da0 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/tokenize/WhitespaceTokenizer.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/tokenize/WhitespaceTokenizer.java
@@ -76,7 +76,7 @@ public class WhitespaceTokenizer extends AbstractTokenizer {
       tokens.add(new Span(tokStart, end));
     }
 
-    return tokens.toArray(new Span[tokens.size()]);
+    return tokens.toArray(new Span[0]);
   }
 
   private boolean isLineSeparator(char character) {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/en/TokenSampleStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/en/TokenSampleStream.java
index fa7f741e..26f9664e 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/en/TokenSampleStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/en/TokenSampleStream.java
@@ -109,7 +109,7 @@ public class TokenSampleStream implements 
Iterator<TokenSample> {
       e.printStackTrace();
       line = null;
     }
-    return new TokenSample(sb.toString(),spans.toArray(new 
Span[spans.size()]));
+    return new TokenSample(sb.toString(),spans.toArray(new Span[0]));
   }
 
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGenerator.java
 
b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGenerator.java
index 5939ae31..78af4325 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGenerator.java
@@ -50,7 +50,7 @@ public class AggregatedFeatureGenerator implements 
AdaptiveFeatureGenerator {
   }
 
   public AggregatedFeatureGenerator(Collection<AdaptiveFeatureGenerator> 
generators) {
-    this(generators.toArray(new AdaptiveFeatureGenerator[generators.size()]));
+    this(generators.toArray(new AdaptiveFeatureGenerator[0]));
   }
 
   /**
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGeneratorFactory.java
 
b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGeneratorFactory.java
index e47dee58..442eba4d 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGeneratorFactory.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGeneratorFactory.java
@@ -58,7 +58,7 @@ public class AggregatedFeatureGeneratorFactory
     }
 
     return new AggregatedFeatureGenerator(aggregatedGenerators.toArray(
-        new AdaptiveFeatureGenerator[aggregatedGenerators.size()]));
+            new AdaptiveFeatureGenerator[0]));
   }
 
   @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no 
longer needed
@@ -75,6 +75,6 @@ public class AggregatedFeatureGeneratorFactory
       }
     }
     return new AggregatedFeatureGenerator(aggregatedGenerators.toArray(
-        new AdaptiveFeatureGenerator[aggregatedGenerators.size()]));
+            new AdaptiveFeatureGenerator[0]));
   }
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java
 
b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java
index e4d18fb8..fd35bdd5 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java
@@ -187,7 +187,7 @@ public class GeneratorFactory {
       if (generators.size() > 1) {
         AdaptiveFeatureGenerator aggregatedFeatureGenerator =
             new AggregatedFeatureGenerator(generators.toArray(
-                new AdaptiveFeatureGenerator[generators.size()]));
+                    new AdaptiveFeatureGenerator[0]));
         args.put("generator#0", aggregatedFeatureGenerator);
       }
     }
@@ -473,7 +473,7 @@ public class GeneratorFactory {
         featureGenerator = generators.get(0);
       else if (generators.size() > 1)
         featureGenerator = new AggregatedFeatureGenerator(generators.toArray(
-            new AdaptiveFeatureGenerator[generators.size()]));
+                new AdaptiveFeatureGenerator[0]));
       else
         throw new InvalidFormatException("featureGenerators must have one or 
more generators");
 
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunkSampleStream.java 
b/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunkSampleStream.java
index acbba84e..34bc7efc 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunkSampleStream.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunkSampleStream.java
@@ -72,14 +72,14 @@ public class DummyChunkSampleStream extends
 
     if (toks.size() > 0) {
       if (mIsPredicted) {
-        return new ChunkSample(toks.toArray(new String[toks.size()]),
-            posTags.toArray(new String[posTags.size()]),
+        return new ChunkSample(toks.toArray(new String[0]),
+            posTags.toArray(new String[0]),
             predictedChunkTags
-            .toArray(new String[predictedChunkTags.size()]));
+            .toArray(new String[0]));
       } else
-        return new ChunkSample(toks.toArray(new String[toks.size()]),
-            posTags.toArray(new String[posTags.size()]),
-            chunkTags.toArray(new String[chunkTags.size()]));
+        return new ChunkSample(toks.toArray(new String[0]),
+            posTags.toArray(new String[0]),
+            chunkTags.toArray(new String[0]));
     } else {
       return null;
     }
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunker.java 
b/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunker.java
index 08f93ab2..6719a49b 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunker.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunker.java
@@ -39,8 +39,8 @@ public class DummyChunker implements Chunker {
   }
 
   public List<String> chunk(List<String> toks, List<String> tags) {
-    return Arrays.asList(chunk(toks.toArray(new String[toks.size()]),
-        tags.toArray(new String[tags.size()])));
+    return Arrays.asList(chunk(toks.toArray(new String[0]),
+        tags.toArray(new String[0])));
   }
 
   public String[] chunk(String[] toks, String[] tags) {
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/eval/SourceForgeModelEval.java 
b/opennlp-tools/src/test/java/opennlp/tools/eval/SourceForgeModelEval.java
index 6f4a2ac9..fdb7d2fe 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/eval/SourceForgeModelEval.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/eval/SourceForgeModelEval.java
@@ -96,7 +96,7 @@ public class SourceForgeModelEval extends AbstractEvalTest {
     }
 
     public String[] getText() {
-      return text.toArray(new String[text.size()]);
+      return text.toArray(new String[0]);
     }
 
     @Override
@@ -152,7 +152,7 @@ public class SourceForgeModelEval extends AbstractEvalTest {
       }
 
       if (tokensList.size() > 0) {
-        return new LeipzigTestSample(tokensList.toArray(new 
String[tokensList.size()]));
+        return new LeipzigTestSample(tokensList.toArray(new String[0]));
       }
 
       return null;
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java 
b/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java
index 624c3762..528bd125 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java
@@ -87,7 +87,7 @@ public class DummyFactory extends LanguageDetectorFactory {
         }
       }
 
-      return context.toArray(new String[context.size()]);
+      return context.toArray(new String[0]);
     }
   }
 }
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DummyLemmaSampleStream.java
 
b/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DummyLemmaSampleStream.java
index a82a2010..1f59160c 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DummyLemmaSampleStream.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DummyLemmaSampleStream.java
@@ -66,13 +66,13 @@ public class DummyLemmaSampleStream
 
     if (toks.size() > 0) {
       if (mIsPredicted) {
-        return new LemmaSample(toks.toArray(new String[toks.size()]),
-            posTags.toArray(new String[posTags.size()]),
-            predictedLemmas.toArray(new String[predictedLemmas.size()]));
+        return new LemmaSample(toks.toArray(new String[0]),
+            posTags.toArray(new String[0]),
+            predictedLemmas.toArray(new String[0]));
       } else
-        return new LemmaSample(toks.toArray(new String[toks.size()]),
-            posTags.toArray(new String[posTags.size()]),
-            goldLemmas.toArray(new String[goldLemmas.size()]));
+        return new LemmaSample(toks.toArray(new String[0]),
+            posTags.toArray(new String[0]),
+            goldLemmas.toArray(new String[0]));
     } else {
       return null;
     }
diff --git 
a/opennlp-uima/src/main/java/opennlp/uima/doccat/AbstractDocumentCategorizer.java
 
b/opennlp-uima/src/main/java/opennlp/uima/doccat/AbstractDocumentCategorizer.java
index 4b372915..768738b3 100644
--- 
a/opennlp-uima/src/main/java/opennlp/uima/doccat/AbstractDocumentCategorizer.java
+++ 
b/opennlp-uima/src/main/java/opennlp/uima/doccat/AbstractDocumentCategorizer.java
@@ -96,7 +96,7 @@ abstract class AbstractDocumentCategorizer extends 
CasAnnotator_ImplBase {
     }
 
     double[] result =
-        mCategorizer.categorize(tokensList.toArray(new 
String[tokensList.size()]));
+        mCategorizer.categorize(tokensList.toArray(new String[0]));
 
     String bestCategory = mCategorizer.getBestCategory(result);
 
diff --git 
a/opennlp-uima/src/main/java/opennlp/uima/namefind/AbstractNameFinder.java 
b/opennlp-uima/src/main/java/opennlp/uima/namefind/AbstractNameFinder.java
index 5055cdc7..579a0ca6 100644
--- a/opennlp-uima/src/main/java/opennlp/uima/namefind/AbstractNameFinder.java
+++ b/opennlp-uima/src/main/java/opennlp/uima/namefind/AbstractNameFinder.java
@@ -190,7 +190,7 @@ abstract class AbstractNameFinder extends 
CasAnnotator_ImplBase {
       }
 
       Span[] names  = find(cas,
-          sentenceTokenList.toArray(new String[sentenceTokenList.size()]));
+          sentenceTokenList.toArray(new String[0]));
 
       AnnotationFS[] nameAnnotations = new AnnotationFS[names.length];
 
diff --git a/opennlp-uima/src/main/java/opennlp/uima/parser/Parser.java 
b/opennlp-uima/src/main/java/opennlp/uima/parser/Parser.java
index 62338e96..ad6771f2 100644
--- a/opennlp-uima/src/main/java/opennlp/uima/parser/Parser.java
+++ b/opennlp-uima/src/main/java/opennlp/uima/parser/Parser.java
@@ -173,7 +173,7 @@ public class Parser extends CasAnnotator_ImplBase {
           token.getEnd() - sentenceAnnotation.getBegin()));
     }
 
-    ParseConverter converter = new ParseConverter(sentence, 
tokenSpans.toArray(new Span[tokenSpans.size()]));
+    ParseConverter converter = new ParseConverter(sentence, 
tokenSpans.toArray(new Span[0]));
 
     Parse unparsedTree = converter.getParseForTagger();
 
diff --git a/opennlp-uima/src/main/java/opennlp/uima/postag/POSTagger.java 
b/opennlp-uima/src/main/java/opennlp/uima/postag/POSTagger.java
index db0f66d2..643a37a3 100644
--- a/opennlp-uima/src/main/java/opennlp/uima/postag/POSTagger.java
+++ b/opennlp-uima/src/main/java/opennlp/uima/postag/POSTagger.java
@@ -178,7 +178,7 @@ public final class POSTagger extends CasAnnotator_ImplBase {
       }
 
       final List<String> posTags = Arrays.asList(this.posTagger.tag(
-          sentenceTokenList.toArray(new String[sentenceTokenList.size()])));
+          sentenceTokenList.toArray(new String[0])));
 
       double[] posProbabilities = null;
 

Reply via email to