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

mawiesne pushed a commit to branch 
OPENNLP-1583-Reduce-compiler-warnings-in-opennlp-tools
in repository https://gitbox.apache.org/repos/asf/opennlp.git

commit 0937b25ad8a2df31bd717bab6b350bb7ce856b7f
Author: Martin Wiesner <[email protected]>
AuthorDate: Sun Jun 30 13:20:11 2024 +0200

    OPENNLP-1583 Reduce compiler warnings in opennlp-tools
    - rewrites code in opennlp-tools module to avoid complaints by javac
    - removes long-time deprecated PosModel#getPosModel() method (comment was: 
"This method will be removed soon")
    - removes long-time deprecated ChunkerModel#getChunkerModel() method
---
 .../tagdict/MorfologikPOSTaggerFactory.java        |  5 ++--
 .../main/java/opennlp/tools/chunker/ChunkerME.java |  7 +++---
 .../java/opennlp/tools/chunker/ChunkerModel.java   | 26 +++++++--------------
 .../java/opennlp/tools/cmdline/CmdLineTool.java    |  2 +-
 .../java/opennlp/tools/doccat/DoccatModel.java     |  4 ++++
 .../opennlp/tools/entitylinker/LinkedSpan.java     |  4 ++++
 .../opennlp/tools/formats/masc/MascDocument.java   |  4 +++-
 .../DefaultLanguageDetectorContextGenerator.java   |  7 +++++-
 .../tools/langdetect/LanguageDetectorME.java       |  4 ++++
 .../tools/langdetect/LanguageDetectorModel.java    |  4 ++++
 .../opennlp/tools/lemmatizer/LemmatizerME.java     |  6 ++---
 .../opennlp/tools/lemmatizer/LemmatizerModel.java  | 10 ++++----
 .../ml/AbstractEventModelSequenceTrainer.java      |  5 ++--
 .../src/main/java/opennlp/tools/ml/BeamSearch.java | 11 ++++-----
 .../java/opennlp/tools/ml/SequenceTrainer.java     |  2 +-
 .../ml/model/SequenceClassificationModel.java      | 10 ++++----
 .../tools/ml/model/SequenceStreamEventStream.java  |  2 +-
 .../java/opennlp/tools/namefind/NameFinderME.java  |  6 ++---
 .../tools/namefind/TokenNameFinderModel.java       | 16 +++++++++----
 .../java/opennlp/tools/parser/ParserModel.java     |  6 ++++-
 .../parser/treeinsert/AttachContextGenerator.java  |  2 +-
 .../main/java/opennlp/tools/postag/POSModel.java   | 27 +++++++---------------
 .../opennlp/tools/postag/POSTaggerFactory.java     |  8 +++----
 .../java/opennlp/tools/postag/POSTaggerME.java     | 20 +++++++---------
 .../tools/sentdetect/SentenceDetectorME.java       |  1 +
 .../java/opennlp/tools/util/BaseToolFactory.java   |  3 +--
 .../src/main/java/opennlp/tools/util/Span.java     |  2 ++
 .../java/opennlp/tools/util/model/BaseModel.java   | 14 +++++++----
 .../tools/util/model/ChunkerModelSerializer.java   |  3 ++-
 .../tools/util/model/POSModelSerializer.java       |  2 +-
 .../opennlp/tools/langdetect/DummyFactory.java     | 17 +++++++-------
 .../test/java/opennlp/tools/ml/BeamSearchTest.java |  9 ++++----
 .../java/opennlp/tools/ml/MockSequenceTrainer.java |  6 ++---
 .../opennlp/tools/namefind/NameFinderMETest.java   |  2 +-
 .../tools/postag/DummyPOSTaggerFactory.java        |  5 ++--
 .../opennlp/tools/postag/POSTaggerFactoryTest.java | 16 ++-----------
 .../sentdetect/DummySentenceDetectorFactory.java   |  5 ++--
 .../tools/tokenize/DummyTokenizerFactory.java      |  5 ++--
 .../featuregen/CachedFeatureGeneratorTest.java     |  3 +--
 39 files changed, 146 insertions(+), 145 deletions(-)

diff --git 
a/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java
 
b/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java
index 85ad6e44..b3a8e2b0 100644
--- 
a/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java
+++ 
b/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java
@@ -133,9 +133,8 @@ public class MorfologikPOSTaggerFactory extends 
POSTaggerFactory {
   }
 
   @Override
-  @SuppressWarnings("rawtypes")
-  public Map<String, ArtifactSerializer> createArtifactSerializersMap() {
-    Map<String, ArtifactSerializer> serializers = 
super.createArtifactSerializersMap();
+  public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() {
+    Map<String, ArtifactSerializer<?>> serializers = 
super.createArtifactSerializersMap();
 
     serializers.put(MORFOLOGIK_POSDICT_SUF, new ByteArraySerializer());
     serializers.put(MORFOLOGIK_DICT_INFO_SUF, new ByteArraySerializer());
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 a96be802..e036742e 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java
@@ -51,7 +51,7 @@ public class ChunkerME implements Chunker {
   /**
    * The model used to assign chunk tags to a sequence of tokens.
    */
-  private final SequenceClassificationModel<TokenTag> model;
+  private final SequenceClassificationModel model;
 
   private final ChunkerContextGenerator contextGenerator;
   private final SequenceValidator<TokenTag> sequenceValidator;
@@ -80,7 +80,8 @@ public class ChunkerME implements Chunker {
       this.model = model.getChunkerSequenceModel();
     }
     else {
-      this.model = new BeamSearch<>(DEFAULT_BEAM_SIZE, 
model.getChunkerModel(), 0);
+      this.model = new BeamSearch(DEFAULT_BEAM_SIZE,
+              model.getArtifact(ChunkerModel.CHUNKER_MODEL_ENTRY_NAME), 0);
     }
   }
 
@@ -157,7 +158,7 @@ public class ChunkerME implements Chunker {
 
     TrainerType trainerType = TrainerFactory.getTrainerType(mlParams);
     MaxentModel chunkerModel = null;
-    SequenceClassificationModel<String> seqChunkerModel = null;
+    SequenceClassificationModel seqChunkerModel = null;
 
     if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) {
       ObjectStream<Event> es = new ChunkerEventStream(in, 
factory.getContextGenerator());
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java 
b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java
index df7cfe65..04e650a5 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java
@@ -20,6 +20,7 @@ package opennlp.tools.chunker;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serial;
 import java.net.URL;
 import java.nio.file.Path;
 import java.util.Map;
@@ -31,7 +32,6 @@ import opennlp.tools.ml.model.MaxentModel;
 import opennlp.tools.ml.model.SequenceClassificationModel;
 import opennlp.tools.util.BaseToolFactory;
 import opennlp.tools.util.InvalidFormatException;
-import opennlp.tools.util.TokenTag;
 import opennlp.tools.util.model.BaseModel;
 
 /**
@@ -41,9 +41,11 @@ import opennlp.tools.util.model.BaseModel;
  */
 public class ChunkerModel extends BaseModel {
 
-  private static final long serialVersionUID = 1608653769616498232L;
+  @Serial
+  private static final long serialVersionUID = -5450757164882452147L;
+
   private static final String COMPONENT_NAME = "ChunkerME";
-  private static final String CHUNKER_MODEL_ENTRY_NAME = "chunker.model";
+  static final String CHUNKER_MODEL_ENTRY_NAME = "chunker.model";
 
   /**
    * Initializes a {@link ChunkerModel} instance via given parameters.
@@ -53,7 +55,7 @@ public class ChunkerModel extends BaseModel {
    * @param manifestInfoEntries Additional information kept in the manifest.
    * @param factory The {@link ChunkerFactory} for creating related objects.
    */
-  public ChunkerModel(String languageCode, SequenceClassificationModel<String> 
chunkerModel,
+  public ChunkerModel(String languageCode, SequenceClassificationModel 
chunkerModel,
       Map<String, String> manifestInfoEntries, ChunkerFactory factory) {
     super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory);
     artifactMap.put(CHUNKER_MODEL_ENTRY_NAME, chunkerModel);
@@ -167,23 +169,11 @@ public class ChunkerModel extends BaseModel {
 
   }
 
-  /**
-   * @deprecated use {@link ChunkerModel#getChunkerSequenceModel()} instead. 
This method will be removed soon.
-   */
-  @Deprecated
-  public MaxentModel getChunkerModel() {
-    if (artifactMap.get(CHUNKER_MODEL_ENTRY_NAME) instanceof MaxentModel) {
-      return (MaxentModel) artifactMap.get(CHUNKER_MODEL_ENTRY_NAME);
-    }
-    else {
-      return null;
-    }
-  }
 
   /**
    * @return Retrieves a {@link SequenceClassificationModel}.
    */
-  public SequenceClassificationModel<TokenTag> getChunkerSequenceModel() {
+  public SequenceClassificationModel getChunkerSequenceModel() {
 
     Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY);
 
@@ -195,7 +185,7 @@ public class ChunkerModel extends BaseModel {
         beamSize = Integer.parseInt(beamSizeString);
       }
 
-      return new BeamSearch<>(beamSize, (MaxentModel) 
artifactMap.get(CHUNKER_MODEL_ENTRY_NAME));
+      return new BeamSearch(beamSize, (MaxentModel) 
artifactMap.get(CHUNKER_MODEL_ENTRY_NAME));
     }
     else if (artifactMap.get(CHUNKER_MODEL_ENTRY_NAME) instanceof 
SequenceClassificationModel) {
       return (SequenceClassificationModel) 
artifactMap.get(CHUNKER_MODEL_ENTRY_NAME);
diff --git a/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java 
b/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java
index d0b2d1b5..cec52f5b 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java
@@ -45,7 +45,7 @@ public abstract class CmdLineTool {
   }
 
   protected String getBasicHelp(Class<?> argProxyInterface) {
-    return getBasicHelp(new Class[]{argProxyInterface});
+    return getBasicHelp(new Class<?>[]{argProxyInterface});
   }
 
   protected String getBasicHelp(Class<?>... argProxyInterfaces) {
diff --git a/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java 
b/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java
index 26776eae..a7318b01 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java
@@ -20,6 +20,7 @@ package opennlp.tools.doccat;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serial;
 import java.net.URL;
 import java.nio.file.Path;
 import java.util.Map;
@@ -35,6 +36,9 @@ import opennlp.tools.util.model.BaseModel;
  */
 public class DoccatModel extends BaseModel {
 
+  @Serial
+  private static final long serialVersionUID = -1348944493118276133L;
+
   private static final String COMPONENT_NAME = "DocumentCategorizerME";
   private static final String DOCCAT_MODEL_ENTRY_NAME = "doccat.model";
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java 
b/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java
index ea9c09be..a12ffa9c 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java
@@ -16,6 +16,7 @@
  */
 package opennlp.tools.entitylinker;
 
+import java.io.Serial;
 import java.util.ArrayList;
 import java.util.Objects;
 
@@ -28,6 +29,9 @@ import opennlp.tools.util.Span;
  */
 public class LinkedSpan<T extends BaseLink> extends Span {
 
+  @Serial
+  private static final long serialVersionUID = 2089863052379334449L;
+  
   private ArrayList<T> linkedEntries;
   private int sentenceid = 0;
   private String searchTerm;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascDocument.java 
b/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascDocument.java
index aec39b88..e4e1177c 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascDocument.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascDocument.java
@@ -315,7 +315,8 @@ public class MascDocument {
    *                      to entity type Strings, and entityIDsToTokens, 
mapping entity ID integers to Penn
    *                      token ID integers
    */
-  private void addNamedEntityTags(Map<String, Map<Integer, ?>> namedEntities) {
+  @SuppressWarnings("unchecked")
+  private void addNamedEntityTags(Map<String, Map<Integer, ? extends Object>> 
namedEntities) {
     try {
       Map<Integer, String> entityIDtoEntityType =
               (Map<Integer, String>) namedEntities.get("entityIDtoEntityType");
@@ -343,6 +344,7 @@ public class MascDocument {
    *                * tokenToBase, from Penn token ID (int) to the base and 
tokenToQuarks, from Penn token ID
    *                * (int) to a List of quark IDs contained in that token.
    */
+  @SuppressWarnings("unchecked")
   private void addPennTags(Map<String, Map<Integer, ?>> tagMaps) throws 
IOException {
     try {
       // Extract individual mappings
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 db5fbadf..7abe1278 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java
@@ -17,6 +17,7 @@
 
 package opennlp.tools.langdetect;
 
+import java.io.Serial;
 import java.util.ArrayList;
 import java.util.Collection;
 
@@ -25,10 +26,13 @@ import 
opennlp.tools.util.normalizer.AggregateCharSequenceNormalizer;
 import opennlp.tools.util.normalizer.CharSequenceNormalizer;
 
 /**
- * A context generator for language detector.
+ * A context generator for {@link LanguageDetectorContextGenerator language 
detector}.
  */
 public class DefaultLanguageDetectorContextGenerator implements 
LanguageDetectorContextGenerator {
 
+  @Serial
+  private static final long serialVersionUID = 8891936509865460799L;
+
   protected final int minLength;
   protected final int maxLength;
   protected final CharSequenceNormalizer normalizer;
@@ -50,6 +54,7 @@ public class DefaultLanguageDetectorContextGenerator 
implements LanguageDetector
   }
 
   @Override
+  @SuppressWarnings("unchecked")
   public <T extends CharSequence> T[] getContext(CharSequence document) {
     Collection<CharSequence> context = new ArrayList<>();
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java 
b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java
index 539f7c9d..6623aa6f 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java
@@ -18,6 +18,7 @@
 package opennlp.tools.langdetect;
 
 import java.io.IOException;
+import java.io.Serial;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -62,6 +63,9 @@ import opennlp.tools.util.TrainingParameters;
  */
 public class LanguageDetectorME implements LanguageDetector {
 
+  @Serial
+  private static final long serialVersionUID = 2426614409522429702L;
+  
   protected final LanguageDetectorModel model;
   private final LanguageDetectorContextGenerator mContextGenerator;
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java
 
b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java
index a37b64f0..4f2ac4fc 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java
@@ -20,6 +20,7 @@ package opennlp.tools.langdetect;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serial;
 import java.net.URL;
 import java.util.Map;
 
@@ -36,6 +37,9 @@ import opennlp.tools.util.model.BaseModel;
  */
 public class LanguageDetectorModel extends BaseModel {
 
+  @Serial
+  private static final long serialVersionUID = -8894047401677394181L;
+
   private static final String COMPONENT_NAME = "LanguageDetectorME";
   private static final String LANGDETECT_MODEL_ENTRY_NAME = "langdetect.model";
 
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 6898cec5..e0170051 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java
@@ -58,7 +58,7 @@ public class LemmatizerME implements Lemmatizer {
   protected final int beamSize;
   private Sequence bestSequence;
 
-  private final SequenceClassificationModel<String> model;
+  private final SequenceClassificationModel model;
 
   private final LemmatizerContextGenerator contextGenerator;
   private final SequenceValidator<String> sequenceValidator;
@@ -88,7 +88,7 @@ public class LemmatizerME implements Lemmatizer {
       this.model = model.getLemmatizerSequenceModel();
     }
     else {
-      this.model = new opennlp.tools.ml.BeamSearch<>(beamSize,
+      this.model = new opennlp.tools.ml.BeamSearch(beamSize,
           (MaxentModel) model.getLemmatizerSequenceModel(), 0);
     }
   }
@@ -257,7 +257,7 @@ public class LemmatizerME implements Lemmatizer {
     TrainerType trainerType = TrainerFactory.getTrainerType(params);
 
     MaxentModel lemmatizerModel = null;
-    SequenceClassificationModel<String> seqLemmatizerModel = null;
+    SequenceClassificationModel seqLemmatizerModel = null;
     if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) {
       ObjectStream<Event> es = new LemmaSampleEventStream(samples, 
contextGenerator);
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java 
b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java
index 3fa2aac3..ba467334 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java
@@ -20,6 +20,7 @@ package opennlp.tools.lemmatizer;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serial;
 import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -41,6 +42,7 @@ import opennlp.tools.util.model.BaseModel;
  */
 public class LemmatizerModel extends BaseModel {
 
+  @Serial
   private static final long serialVersionUID = -3362902631186156673L;
   private static final String COMPONENT_NAME = "StatisticalLemmatizer";
   private static final String LEMMATIZER_MODEL_ENTRY_NAME = "lemmatizer.model";
@@ -53,7 +55,7 @@ public class LemmatizerModel extends BaseModel {
    * @param manifestInfoEntries Additional information kept in the manifest.
    * @param factory The {@link LemmatizerFactory} for creating related objects.
    */
-  public LemmatizerModel(String languageCode, 
SequenceClassificationModel<String> lemmatizerModel,
+  public LemmatizerModel(String languageCode, SequenceClassificationModel 
lemmatizerModel,
       Map<String, String> manifestInfoEntries, LemmatizerFactory factory) {
     super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory);
     artifactMap.put(LEMMATIZER_MODEL_ENTRY_NAME, lemmatizerModel);
@@ -159,7 +161,7 @@ public class LemmatizerModel extends BaseModel {
   /**
    * @return Retrieves a {@link SequenceClassificationModel} instance.
    */
-  public SequenceClassificationModel<String> getLemmatizerSequenceModel() {
+  public SequenceClassificationModel getLemmatizerSequenceModel() {
 
     Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY);
 
@@ -171,10 +173,10 @@ public class LemmatizerModel extends BaseModel {
         beamSize = Integer.parseInt(beamSizeString);
       }
 
-      return new BeamSearch<>(beamSize, (MaxentModel) 
artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME));
+      return new BeamSearch(beamSize, (MaxentModel) 
artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME));
     }
     else if (artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME) instanceof 
SequenceClassificationModel) {
-      return (SequenceClassificationModel<String>) 
artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME);
+      return (SequenceClassificationModel) 
artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME);
     }
     else {
       return null;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java
 
b/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java
index a7333d31..b233df23 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java
@@ -27,7 +27,7 @@ import opennlp.tools.ml.model.SequenceStream;
  * A basic {@link EventModelSequenceTrainer} implementation that processes 
{@link Event events}.
  */
 public abstract class AbstractEventModelSequenceTrainer extends 
AbstractTrainer implements
-    EventModelSequenceTrainer<Event> {
+    EventModelSequenceTrainer<Event>  {
 
   public AbstractEventModelSequenceTrainer() {
   }
@@ -39,8 +39,7 @@ public abstract class AbstractEventModelSequenceTrainer 
extends AbstractTrainer
     validate();
 
     MaxentModel model = doTrain(events);
-    addToReport(AbstractTrainer.TRAINER_TYPE_PARAM,
-        EventModelSequenceTrainer.SEQUENCE_VALUE);
+    addToReport(AbstractTrainer.TRAINER_TYPE_PARAM, 
EventModelSequenceTrainer.SEQUENCE_VALUE);
     return model;
   }
 
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 f6cfec87..42df2c7b 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java
@@ -39,7 +39,7 @@ import opennlp.tools.util.SequenceValidator;
  * @see SequenceValidator
  * @see BeamSearchContextGenerator
  */
-public class BeamSearch<T> implements SequenceClassificationModel<T> {
+public class BeamSearch implements SequenceClassificationModel {
 
   public static final String BEAM_SIZE_PARAMETER = "BeamSize";
 
@@ -97,7 +97,7 @@ public class BeamSearch<T> implements 
SequenceClassificationModel<T> {
    *         if no sequence could be found.
    */
   @Override
-  public Sequence[] bestSequences(int numSequences, T[] sequence,
+  public <T> Sequence[] bestSequences(int numSequences, T[] sequence,
       Object[] additionalContext, double minSequenceScore,
       BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator) {
 
@@ -189,7 +189,7 @@ public class BeamSearch<T> implements 
SequenceClassificationModel<T> {
    *         if no sequence could be found.
    */
   @Override
-  public Sequence[] bestSequences(int numSequences, T[] sequence,
+  public <T> Sequence[] bestSequences(int numSequences, T[] sequence,
       Object[] additionalContext, BeamSearchContextGenerator<T> cg, 
SequenceValidator<T> validator) {
     return bestSequences(numSequences, sequence, additionalContext, zeroLog, 
cg, validator);
   }
@@ -208,9 +208,9 @@ public class BeamSearch<T> implements 
SequenceClassificationModel<T> {
    *         if no sequence could be found.
    */
   @Override
-  public Sequence bestSequence(T[] sequence, Object[] additionalContext,
+  public <T> Sequence bestSequence(T[] sequence, Object[] additionalContext,
       BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator) {
-    Sequence[] sequences =  bestSequences(1, sequence, additionalContext, cg, 
validator);
+    Sequence[] sequences = bestSequences(1, sequence, additionalContext, cg, 
validator);
 
     if (sequences.length > 0)
       return sequences[0];
@@ -225,7 +225,6 @@ public class BeamSearch<T> implements 
SequenceClassificationModel<T> {
     for (int i = 0; i < model.getNumOutcomes(); i++) {
       outcomes[i] = model.getOutcome(i);
     }
-
     return outcomes;
   }
 }
diff --git a/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java 
b/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java
index 855ca5c7..1280dfcc 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java
@@ -36,5 +36,5 @@ public interface SequenceTrainer extends Trainer {
    * @return The trained {@link SequenceClassificationModel}.
    * @throws IOException Thrown if IO errors occurred.
    */
-  <T> SequenceClassificationModel<String> train(SequenceStream<T> events) 
throws IOException;
+  <T> SequenceClassificationModel train(SequenceStream<T> events) throws 
IOException;
 }
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java
 
b/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java
index 5d1976fb..8329701f 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java
@@ -23,10 +23,8 @@ import opennlp.tools.util.SequenceValidator;
 
 /**
  * A classification model that can label an input {@link Sequence}.
- *
- * @param <T> The type of the object which is the source.
  */
-public interface SequenceClassificationModel<T> {
+public interface SequenceClassificationModel {
 
   /**
    * Finds the {@link Sequence} with the highest probability.
@@ -38,7 +36,7 @@ public interface SequenceClassificationModel<T> {
    *
    * @return The {@link Sequence} with the highest probability.
    */
-  Sequence bestSequence(T[] sequence, Object[] additionalContext,
+  <T> Sequence bestSequence(T[] sequence, Object[] additionalContext,
       BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator);
 
   /**
@@ -53,7 +51,7 @@ public interface SequenceClassificationModel<T> {
    *
    * @return The {@link Sequence sequences} with the highest probability.
    */
-  Sequence[] bestSequences(int numSequences, T[] sequence, Object[] 
additionalContext,
+  <T> Sequence[] bestSequences(int numSequences, T[] sequence, Object[] 
additionalContext,
       double minSequenceScore, BeamSearchContextGenerator<T> cg, 
SequenceValidator<T> validator);
 
   /**
@@ -67,7 +65,7 @@ public interface SequenceClassificationModel<T> {
    *
    * @return The {@link Sequence sequences} with the highest probability.
    */
-  Sequence[] bestSequences(int numSequences, T[] sequence,
+  <T> Sequence[] bestSequences(int numSequences, T[] sequence,
       Object[] additionalContext, BeamSearchContextGenerator<T> cg, 
SequenceValidator<T> validator);
 
   /**
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java
 
b/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java
index 9bc5f34c..906da057 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java
@@ -43,7 +43,7 @@ public class SequenceStreamEventStream implements 
ObjectStream<Event> {
   @Override
   public Event read() throws IOException {
     while (!eventIt.hasNext()) {
-      Sequence<?> sequence = sequenceStream.read();
+      Sequence<Event> sequence = sequenceStream.read();
       if (sequence == null) {
         return null;
       }
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 915db34b..f8c5e667 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
@@ -64,7 +64,7 @@ public class NameFinderME implements TokenNameFinder {
 
   private final SequenceCodec<String> seqCodec;
 
-  protected final SequenceClassificationModel<String> model;
+  protected final SequenceClassificationModel model;
 
   protected final NameContextGenerator contextGenerator;
   private Sequence bestSequence;
@@ -244,7 +244,7 @@ public class NameFinderME implements TokenNameFinder {
     Map<String, String> manifestInfoEntries = new HashMap<>();
 
     MaxentModel nameFinderModel = null;
-    SequenceClassificationModel<String> seqModel = null;
+    SequenceClassificationModel seqModel = null;
 
     TrainerType trainerType = TrainerFactory.getTrainerType(params);
 
@@ -259,7 +259,7 @@ public class NameFinderME implements TokenNameFinder {
     else if (TrainerType.EVENT_MODEL_SEQUENCE_TRAINER.equals(trainerType)) {
       NameSampleSequenceStream ss = new NameSampleSequenceStream(samples, 
factory.createContextGenerator());
 
-      EventModelSequenceTrainer trainer = 
TrainerFactory.getEventModelSequenceTrainer(
+      EventModelSequenceTrainer<NameSample> trainer = 
TrainerFactory.getEventModelSequenceTrainer(
               params, manifestInfoEntries);
       nameFinderModel = trainer.train(ss);
     } else if (TrainerType.SEQUENCE_TRAINER.equals(trainerType)) {
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java
index 2a89a4c3..57f6b7de 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java
@@ -21,6 +21,7 @@ package opennlp.tools.namefind;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serial;
 import java.net.URL;
 import java.nio.file.Path;
 import java.util.Map;
@@ -47,7 +48,14 @@ import opennlp.tools.util.model.ByteArraySerializer;
 // TODO: Fix the model validation, on loading via constructors and input 
streams
 public class TokenNameFinderModel extends BaseModel {
 
+  @Serial
+  private static final long serialVersionUID = -459655422186301499L;
+
   public static class FeatureGeneratorCreationError extends RuntimeException {
+
+    @Serial
+    private static final long serialVersionUID = -7004590770543145243L;
+
     FeatureGeneratorCreationError(Throwable t) {
       super(t);
     }
@@ -74,7 +82,7 @@ public class TokenNameFinderModel extends BaseModel {
    * @throws IllegalArgumentException Thrown if the {@code namFinderModel} 
incompatible
    *                                  with {@code seqCodec}.
    */
-  public TokenNameFinderModel(String languageCode, 
SequenceClassificationModel<String> nameFinderModel,
+  public TokenNameFinderModel(String languageCode, SequenceClassificationModel 
nameFinderModel,
       byte[] generatorDescriptor, Map<String, Object> resources, Map<String, 
String> manifestInfoEntries,
       SequenceCodec<String> seqCodec, TokenNameFinderFactory factory) {
     super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory);
@@ -248,7 +256,7 @@ public class TokenNameFinderModel extends BaseModel {
    * @return Retrieves a valid {@link SequenceClassificationModel} or {@code 
null}
    *         if no matching one could be found.
    */
-  public SequenceClassificationModel<String> getNameFinderSequenceModel() {
+  public SequenceClassificationModel getNameFinderSequenceModel() {
 
     Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY);
 
@@ -260,7 +268,7 @@ public class TokenNameFinderModel extends BaseModel {
         beamSize = Integer.parseInt(beamSizeString);
       }
 
-      return new BeamSearch<>(beamSize, (MaxentModel) 
artifactMap.get(MAXENT_MODEL_ENTRY_NAME));
+      return new BeamSearch(beamSize, (MaxentModel) 
artifactMap.get(MAXENT_MODEL_ENTRY_NAME));
     }
     else if (artifactMap.get(MAXENT_MODEL_ENTRY_NAME) instanceof 
SequenceClassificationModel) {
       return (SequenceClassificationModel) 
artifactMap.get(MAXENT_MODEL_ENTRY_NAME);
@@ -290,7 +298,7 @@ public class TokenNameFinderModel extends BaseModel {
   }
 
   @Override
-  protected void createArtifactSerializers(Map<String, ArtifactSerializer> 
serializers) {
+  protected void createArtifactSerializers(Map<String, ArtifactSerializer<?>> 
serializers) {
     super.createArtifactSerializers(serializers);
 
     serializers.put("featuregen", new ByteArraySerializer());
diff --git a/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java
index dd4134ef..7fd12f4b 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java
@@ -24,6 +24,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
+import java.io.Serial;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
@@ -45,6 +46,9 @@ import opennlp.tools.util.model.POSModelSerializer;
  */
 public class ParserModel extends BaseModel {
 
+  @Serial
+  private static final long serialVersionUID = 8130378166122870498L;
+
   private static class HeadRulesSerializer implements
       ArtifactSerializer<opennlp.tools.parser.lang.en.HeadRules> {
 
@@ -203,7 +207,7 @@ public class ParserModel extends BaseModel {
   }
 
   @Override
-  protected void createArtifactSerializers(Map<String, ArtifactSerializer> 
serializers) {
+  protected void createArtifactSerializers(Map<String, ArtifactSerializer<?>> 
serializers) {
 
     super.createArtifactSerializers(serializers);
 
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 6bc4d5c5..457a2b84 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
@@ -43,7 +43,7 @@ public class AttachContextGenerator extends 
AbstractContextGenerator {
 
   public String[] getContext(Object o) {
     Object[] parts = (Object[]) o;
-    return getContext((Parse[]) parts[0], (Integer) parts[1],(List<Parse>) 
parts[2], (Integer) parts[3]);
+    return getContext((Parse[]) parts[0], (Integer) parts[1], (List<Parse>) 
parts[2], (Integer) parts[3]);
   }
 
   private boolean containsPunct(Collection<Parse> puncts, String punct) {
diff --git a/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java 
b/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java
index 5c344641..616b6214 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java
@@ -20,6 +20,7 @@ package opennlp.tools.postag;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serial;
 import java.net.URL;
 import java.nio.file.Path;
 import java.util.Arrays;
@@ -46,7 +47,9 @@ import opennlp.tools.util.model.SerializableArtifact;
  */
 public final class POSModel extends BaseModel implements SerializableArtifact {
 
-  private static final long serialVersionUID = -6014331858195322339L;
+  @Serial
+  private static final long serialVersionUID = -3085487677101643697L;
+
   private static final String COMPONENT_NAME = "POSTaggerME";
   static final String POS_MODEL_ENTRY_NAME = "pos.model";
   static final String GENERATOR_DESCRIPTOR_ENTRY_NAME = "generator.featuregen";
@@ -59,7 +62,7 @@ public final class POSModel extends BaseModel implements 
SerializableArtifact {
    * @param manifestInfoEntries Additional information kept in the manifest.
    * @param posFactory The {@link POSTaggerFactory} for creating related 
objects.
    */
-  public POSModel(String languageCode, SequenceClassificationModel<String> 
posModel,
+  public POSModel(String languageCode, SequenceClassificationModel posModel,
       Map<String, String> manifestInfoEntries, POSTaggerFactory posFactory) {
 
     super(COMPONENT_NAME, languageCode, manifestInfoEntries, posFactory);
@@ -177,24 +180,10 @@ public final class POSModel extends BaseModel implements 
SerializableArtifact {
     return GENERATOR_DESCRIPTOR_ENTRY_NAME.equals(entry.getKey()) && 
entry.getValue() == null;
   }
 
-  /**
-   * @deprecated use {@link POSModel#getPosSequenceModel} instead. This method 
will be removed soon.
-   * Only required for Parser 1.5.x backward compatibility. Newer models don't 
need this anymore.
-   */
-  @Deprecated
-  public MaxentModel getPosModel() {
-    if (artifactMap.get(POS_MODEL_ENTRY_NAME) instanceof MaxentModel) {
-      return (MaxentModel) artifactMap.get(POS_MODEL_ENTRY_NAME);
-    }
-    else {
-      return null;
-    }
-  }
-
   /**
    * @return Retrieves a {@link SequenceClassificationModel}.
    */
-  public SequenceClassificationModel<String> getPosSequenceModel() {
+  public SequenceClassificationModel getPosSequenceModel() {
 
     Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY);
 
@@ -206,7 +195,7 @@ public final class POSModel extends BaseModel implements 
SerializableArtifact {
         beamSize = Integer.parseInt(beamSizeString);
       }
 
-      return new BeamSearch<>(beamSize, (MaxentModel) 
artifactMap.get(POS_MODEL_ENTRY_NAME));
+      return new BeamSearch(beamSize, (MaxentModel) 
artifactMap.get(POS_MODEL_ENTRY_NAME));
     }
     else if (artifactMap.get(POS_MODEL_ENTRY_NAME) instanceof 
SequenceClassificationModel) {
       return (SequenceClassificationModel) 
artifactMap.get(POS_MODEL_ENTRY_NAME);
@@ -224,7 +213,7 @@ public final class POSModel extends BaseModel implements 
SerializableArtifact {
   }
 
   @Override
-  protected void createArtifactSerializers(Map<String, ArtifactSerializer> 
serializers) {
+  protected void createArtifactSerializers(Map<String, ArtifactSerializer<?>> 
serializers) {
     super.createArtifactSerializers(serializers);
 
     serializers.put("featuregen", new ByteArraySerializer());
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java 
b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java
index 94b0aa63..d338d4cb 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java
@@ -183,9 +183,8 @@ public class POSTaggerFactory extends BaseToolFactory {
   }
 
   @Override
-  @SuppressWarnings("rawtypes")
-  public Map<String, ArtifactSerializer> createArtifactSerializersMap() {
-    Map<String, ArtifactSerializer> serializers = 
super.createArtifactSerializersMap();
+  public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() {
+    Map<String, ArtifactSerializer<?>> serializers = 
super.createArtifactSerializersMap();
 
 
     // NOTE: This is only needed for old models and this if can be removed if 
support is dropped
@@ -326,8 +325,7 @@ public class POSTaggerFactory extends BaseToolFactory {
       artifact.serialize(out);
     }
 
-    @SuppressWarnings("rawtypes")
-    static void register(Map<String, ArtifactSerializer> factories) {
+    static void register(Map<String, ArtifactSerializer<?>> factories) {
       factories.put("tagdict", new POSDictionarySerializer());
     }
   }
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 56b77c32..2deb5738 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java
@@ -80,7 +80,7 @@ public class POSTaggerME implements POSTagger {
 
   private Sequence bestSequence;
 
-  private final SequenceClassificationModel<String> model;
+  private final SequenceClassificationModel model;
 
   private final SequenceValidator<String> sequenceValidator;
 
@@ -148,8 +148,7 @@ public class POSTaggerME implements POSTagger {
     if (model.getPosSequenceModel() != null) {
       this.model = model.getPosSequenceModel();
     } else {
-      this.model = new opennlp.tools.ml.BeamSearch<>(beamSize,
-          model.getPosModel(), 0);
+      this.model = new BeamSearch(beamSize, 
model.getArtifact(POSModel.POS_MODEL_ENTRY_NAME), 0);
     }
 
     this.posTagFormatMapper = new POSTagFormatMapper(getAllPosTags());
@@ -233,12 +232,10 @@ public class POSTaggerME implements POSTagger {
 
   public String[] getOrderedTags(List<String> words, List<String> tags, int 
index, double[] tprobs) {
 
-    if (modelPackage.getPosModel() != null) {
-
-      MaxentModel posModel = modelPackage.getPosModel();
+    MaxentModel posModel = 
modelPackage.getArtifact(POSModel.POS_MODEL_ENTRY_NAME);
+    if (posModel != null) {
 
-      double[] probs = posModel.eval(contextGen.getContext(index,
-          words.toArray(new String[0]),
+      double[] probs = posModel.eval(contextGen.getContext(index, 
words.toArray(new String[0]),
           tags.toArray(new String[0]), null));
 
       String[] orderedTags = new String[probs.length];
@@ -275,7 +272,7 @@ public class POSTaggerME implements POSTagger {
     TrainerType trainerType = TrainerFactory.getTrainerType(trainParams);
 
     MaxentModel posModel = null;
-    SequenceClassificationModel<String> seqPosModel = null;
+    SequenceClassificationModel seqPosModel = null;
     if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) {
       ObjectStream<Event> es = new POSSampleEventStream(samples, 
contextGenerator);
 
@@ -398,9 +395,8 @@ public class POSTaggerME implements POSTagger {
           tagsForWord.add(entry.getKey());
         }
       }
-      if (tagsForWord.size() > 0) {
-        dict.put(wordEntry.getKey(),
-            tagsForWord.toArray(new String[0]));
+      if (!tagsForWord.isEmpty()) {
+        dict.put(wordEntry.getKey(), tagsForWord.toArray(new String[0]));
       }
     }
 
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java 
b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java
index ed8920b8..e65eed33 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java
@@ -111,6 +111,7 @@ public class SentenceDetectorME implements SentenceDetector 
{
    * @deprecated Use a {@link SentenceDetectorFactory} to extend
    *             SentenceDetector functionality.
    */
+  @Deprecated
   public SentenceDetectorME(SentenceModel model, Factory factory) {
     this.model = model.getMaxentModel();
     // if the model has custom EOS characters set, use this to get the context
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java 
b/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java
index ce816565..61c76d32 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java
@@ -60,8 +60,7 @@ public abstract class BaseToolFactory {
    * The base implementation will return a {@link HashMap} that should be
    * populated by subclasses.
    */
-  @SuppressWarnings("rawtypes")
-  public Map<String, ArtifactSerializer> createArtifactSerializersMap() {
+  public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() {
     return new HashMap<>();
   }
 
diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/Span.java 
b/opennlp-tools/src/main/java/opennlp/tools/util/Span.java
index 3b64aa7e..cca3a177 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/util/Span.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/util/Span.java
@@ -17,6 +17,7 @@
 
 package opennlp.tools.util;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Objects;
 
@@ -26,6 +27,7 @@ import java.util.Objects;
  */
 public class Span implements Comparable<Span>, Serializable {
 
+  @Serial
   private static final long serialVersionUID = -7648780019844573507L;
   private final int start;
   private final int end;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java 
b/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java
index 951ffbd5..106a32e8 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java
@@ -27,6 +27,7 @@ import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.OutputStream;
+import java.io.Serial;
 import java.io.Serializable;
 import java.net.URL;
 import java.nio.file.Files;
@@ -52,6 +53,9 @@ import opennlp.tools.util.ext.ExtensionLoader;
 // TODO: Provide subclasses access to serializers already in constructor
 public abstract class BaseModel implements ArtifactProvider, Serializable {
 
+  @Serial
+  private static final long serialVersionUID = -4593612444791752264L;
+
   protected static final String MANIFEST_ENTRY = "manifest.properties";
   protected static final String FACTORY_NAME = "factory";
 
@@ -67,7 +71,7 @@ public abstract class BaseModel implements ArtifactProvider, 
Serializable {
 
   private static final String SERIALIZER_CLASS_NAME_PREFIX = 
"serializer-class-";
 
-  private Map<String, ArtifactSerializer> artifactSerializers = new 
HashMap<>();
+  private Map<String, ArtifactSerializer<?>> artifactSerializers = new 
HashMap<>();
 
   protected Map<String, Object> artifactMap = new HashMap<>();
 
@@ -415,12 +419,12 @@ public abstract class BaseModel implements 
ArtifactProvider, Serializable {
    * @param serializers The key of the map is the file extension used to look 
up
    *                    an {@link ArtifactSerializer}.
    */
-  protected void createArtifactSerializers(Map<String, ArtifactSerializer> 
serializers) {
+  protected void createArtifactSerializers(Map<String, ArtifactSerializer<?>> 
serializers) {
     if (this.toolFactory != null)
       serializers.putAll(this.toolFactory.createArtifactSerializersMap());
   }
 
-  private void createBaseArtifactSerializers(Map<String, ArtifactSerializer> 
serializers) {
+  private void createBaseArtifactSerializers(Map<String, 
ArtifactSerializer<?>> serializers) {
     serializers.putAll(createArtifactSerializers());
   }
 
@@ -602,7 +606,7 @@ public abstract class BaseModel implements 
ArtifactProvider, Serializable {
         continue;
       }
 
-      ArtifactSerializer serializer = getArtifactSerializer(name);
+      ArtifactSerializer<Object> serializer = (ArtifactSerializer<Object>) 
getArtifactSerializer(name);
 
       // If model is serialize-able always use the provided serializer
       if (artifact instanceof SerializableArtifact serializableArtifact) {
@@ -674,11 +678,13 @@ public abstract class BaseModel implements 
ArtifactProvider, Serializable {
   // Serializable and remove the writeObject and readObject methods.
   // This will allow the usage of final for fields that should not change.
 
+  @Serial
   private void writeObject(ObjectOutputStream out) throws IOException {
     out.writeUTF(componentName);
     this.serialize(out);
   }
 
+  @Serial
   private void readObject(final ObjectInputStream in) throws IOException {
 
     isLoadedFromSerialized = true;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java
 
b/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java
index 2941d2a6..3dba89a9 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java
@@ -37,7 +37,8 @@ public class ChunkerModelSerializer implements 
ArtifactSerializer<ChunkerModel>
 
     Version version = model.getVersion();
     if (version.getMajor() == 1 && version.getMinor() == 5) {
-      model = new ChunkerModel(model.getLanguage(), model.getChunkerModel(), 
new ParserChunkerFactory());
+      model = new ChunkerModel(model.getLanguage(), 
model.getArtifact("chunker.model"),
+              new ParserChunkerFactory());
     }
 
     return model;
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java 
b/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java
index 427afe7f..31a7393a 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java
@@ -48,7 +48,7 @@ public class POSModelSerializer implements 
ArtifactSerializer<POSModel> {
         // dependent code branches in other places fail
         manifestInfoEntries.put("OpenNLP-Version", "1.5.0");
 
-        posModel = new POSModel(posModel.getLanguage(), 
posModel.getPosModel(), 10,
+        posModel = new POSModel(posModel.getLanguage(), 
posModel.getArtifact("pos.model"), 10,
             manifestInfoEntries, posModel.getFactory());
       }
     }
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 e0e840fb..d2e56196 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java
@@ -17,7 +17,7 @@
 
 package opennlp.tools.langdetect;
 
-
+import java.io.Serial;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -28,7 +28,6 @@ import opennlp.tools.util.normalizer.CharSequenceNormalizer;
 
 public class DummyFactory extends LanguageDetectorFactory {
 
-
   public DummyFactory() {
     super();
   }
@@ -40,12 +39,12 @@ public class DummyFactory extends LanguageDetectorFactory {
 
   @Override
   public LanguageDetectorContextGenerator getContextGenerator() {
-    return new MyContextGenerator(2, 5,
-            new UpperCaseNormalizer());
+    return new MyContextGenerator(2, 5, new UpperCaseNormalizer());
   }
 
-  public static class UpperCaseNormalizer implements CharSequenceNormalizer {
+  private static class UpperCaseNormalizer implements CharSequenceNormalizer {
 
+    @Serial
     private static final long serialVersionUID = 589425364183582853L;
 
     @Override
@@ -54,8 +53,9 @@ public class DummyFactory extends LanguageDetectorFactory {
     }
   }
 
-  public static class MyContextGenerator extends 
DefaultLanguageDetectorContextGenerator {
+  private static class MyContextGenerator extends 
DefaultLanguageDetectorContextGenerator {
 
+    @Serial
     private static final long serialVersionUID = 5737572653101696876L;
 
     public MyContextGenerator(int min, int max, CharSequenceNormalizer... 
normalizers) {
@@ -63,7 +63,8 @@ public class DummyFactory extends LanguageDetectorFactory {
     }
 
     @Override
-    public String[] getContext(CharSequence document) {
+    @SuppressWarnings("unchecked")
+    public <T extends CharSequence> T[] getContext(CharSequence document) {
       CharSequence[] superContext = super.getContext(document);
 
       List<String> context = new ArrayList<>(superContext.length);
@@ -86,7 +87,7 @@ public class DummyFactory extends LanguageDetectorFactory {
         }
       }
 
-      return context.toArray(new String[0]);
+      return (T[]) context.toArray(new String[0]);
     }
   }
 }
diff --git a/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java 
b/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java
index bf246b87..2c9ee2ea 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java
@@ -37,6 +37,7 @@ public class BeamSearchTest {
       this.outcomeSequence = outcomeSequence;
     }
 
+    @Override
     public String[] getContext(int index, String[] sequence,
                                String[] priorDecisions, Object[] 
additionalContext) {
       return new String[] {outcomeSequence[index]};
@@ -123,7 +124,7 @@ public class BeamSearchTest {
     String[] outcomes = new String[] {"1", "2", "3"};
     MaxentModel model = new IdentityModel(outcomes);
 
-    BeamSearch<String> bs = new BeamSearch<>(3, model);
+    BeamSearch bs = new BeamSearch(3, model);
 
     Sequence seq = bs.bestSequence(sequence, null, cg,
         (int i, String[] inputSequence, String[] outcomesSequence, String 
outcome) -> true);
@@ -143,7 +144,7 @@ public class BeamSearchTest {
     String[] outcomes = new String[] {"1", "2", "3"};
     MaxentModel model = new IdentityModel(outcomes);
 
-    BeamSearch<String> bs = new BeamSearch<>(3, model);
+    BeamSearch bs = new BeamSearch(3, model);
 
     Sequence seq = bs.bestSequence(sequence, null, cg,
         (int i, String[] inputSequence, String[] outcomesSequence,
@@ -165,7 +166,7 @@ public class BeamSearchTest {
     String[] outcomes = new String[] {"1", "2", "3"};
     MaxentModel model = new IdentityModel(outcomes);
 
-    BeamSearch<String> bs = new BeamSearch<>(2, model);
+    BeamSearch bs = new BeamSearch(2, model);
 
     Sequence seq = bs.bestSequence(sequence, null, cg,
         (int i, String[] inputSequence, String[] outcomesSequence,
@@ -191,7 +192,7 @@ public class BeamSearchTest {
     String[] outcomes = new String[] {"1", "2", "3"};
     MaxentModel model = new IdentityModel(outcomes);
 
-    BeamSearch<String> bs = new BeamSearch<>(2, model, 0);
+    BeamSearch bs = new BeamSearch(2, model, 0);
 
     Sequence seq = bs.bestSequence(sequence, null, cg,
         (int i, String[] inputSequence, String[] outcomesSequence,
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java 
b/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java
index 83d32cd5..0d26ffbc 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java
@@ -19,15 +19,15 @@ package opennlp.tools.ml;
 
 import java.util.Map;
 
-import opennlp.tools.commons.Sample;
 import opennlp.tools.ml.model.AbstractModel;
+import opennlp.tools.ml.model.Event;
 import opennlp.tools.ml.model.SequenceStream;
 import opennlp.tools.util.TrainingParameters;
 
-public class MockSequenceTrainer implements EventModelSequenceTrainer<Sample> {
+public class MockSequenceTrainer implements EventModelSequenceTrainer<Event> {
 
   @Override
-  public AbstractModel train(SequenceStream<Sample> events) {
+  public AbstractModel train(SequenceStream<Event> events) {
     return null;
   }
 
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java 
b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java
index ae71500d..7038d664 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java
@@ -290,7 +290,7 @@ public class NameFinderMETest {
   }
 
   private boolean hasOtherAsOutcome(TokenNameFinderModel nameFinderModel) {
-    SequenceClassificationModel<String> model = 
nameFinderModel.getNameFinderSequenceModel();
+    SequenceClassificationModel model = 
nameFinderModel.getNameFinderSequenceModel();
     String[] outcomes = model.getOutcomes();
     for (String outcome : outcomes) {
       if (outcome.equals(NameFinderME.OTHER)) {
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java 
b/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java
index 27c7699e..394ce81c 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java
@@ -56,9 +56,8 @@ public class DummyPOSTaggerFactory extends POSTaggerFactory {
   }
 
   @Override
-  @SuppressWarnings("rawtypes")
-  public Map<String, ArtifactSerializer> createArtifactSerializersMap() {
-    Map<String, ArtifactSerializer> serializers = 
super.createArtifactSerializersMap();
+  public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() {
+    Map<String, ArtifactSerializer<?>> serializers = 
super.createArtifactSerializersMap();
 
     serializers.put(DUMMY_POSDICT, new DummyPOSDictionarySerializer());
     return serializers;
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java 
b/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java
index f6d00d3d..d7e9c371 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java
@@ -41,10 +41,8 @@ import opennlp.tools.util.TrainingParameters;
  */
 public class POSTaggerFactoryTest {
 
-  private static ObjectStream<POSSample> createSampleStream()
-      throws IOException {
-    InputStreamFactory in = new ResourceAsStreamFactory(
-        POSTaggerFactoryTest.class,
+  private static ObjectStream<POSSample> createSampleStream() throws 
IOException {
+    InputStreamFactory in = new 
ResourceAsStreamFactory(POSTaggerFactoryTest.class,
         "/opennlp/tools/postag/AnnotatedSentences.txt");
 
     return new WordTagSampleStream(new PlainTextByLineStream(in, 
StandardCharsets.UTF_8));
@@ -109,20 +107,10 @@ public class POSTaggerFactoryTest {
     Assertions.assertThrows(InvalidFormatException.class, () -> 
BaseToolFactory.create("X", null));
   }
 
-  @Test
-  void testCreateWithInvalidName2() {
-    Assertions.assertThrows(InvalidFormatException.class, () -> 
POSTaggerFactory.create("X", null, null));
-  }
-
   @Test
   void testCreateWithHierarchy() {
     Assertions.assertThrows(InvalidFormatException.class, () ->
             BaseToolFactory.create(Object.class.getCanonicalName(), null));
   }
 
-  @Test
-  void testCreateWithHierarchy2() {
-    Assertions.assertThrows(InvalidFormatException.class, () ->
-            POSTaggerFactory.create(this.getClass().getCanonicalName(), null, 
null));
-  }
 }
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java
 
b/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java
index 9a88f2e5..e7747668 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java
@@ -66,9 +66,8 @@ public class DummySentenceDetectorFactory extends 
SentenceDetectorFactory {
   }
 
   @Override
-  @SuppressWarnings("rawtypes")
-  public Map<String, ArtifactSerializer> createArtifactSerializersMap() {
-    Map<String, ArtifactSerializer> serializers = 
super.createArtifactSerializersMap();
+  public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() {
+    Map<String, ArtifactSerializer<?>> serializers = 
super.createArtifactSerializersMap();
     serializers.put(DUMMY_DICT, new DummyDictionarySerializer());
     return serializers;
   }
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java 
b/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java
index a4c23e74..dab0577b 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java
@@ -64,9 +64,8 @@ public class DummyTokenizerFactory extends TokenizerFactory {
   }
 
   @Override
-  @SuppressWarnings("rawtypes")
-  public Map<String, ArtifactSerializer> createArtifactSerializersMap() {
-    Map<String, ArtifactSerializer> serializers = 
super.createArtifactSerializersMap();
+  public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() {
+    Map<String, ArtifactSerializer<?>> serializers = 
super.createArtifactSerializersMap();
     serializers.put(DUMMY_DICT, new DummyDictionarySerializer());
     return serializers;
   }
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java
index 1f8ed485..05861852 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java
@@ -29,8 +29,7 @@ import org.junit.jupiter.api.Test;
  */
 public class CachedFeatureGeneratorTest {
 
-  private final AdaptiveFeatureGenerator[] identityGenerator = new 
AdaptiveFeatureGenerator[] {
-      new IdentityFeatureGenerator()};
+  private final AdaptiveFeatureGenerator identityGenerator = new 
IdentityFeatureGenerator();
 
   private String[] testSentence1;
 

Reply via email to