diff --git a/gradle/generation/kuromoji.gradle b/gradle/generation/kuromoji.gradle
index 5754bd68d6d0..ec1c14c0a455 100644
--- a/gradle/generation/kuromoji.gradle
+++ b/gradle/generation/kuromoji.gradle
@@ -19,7 +19,7 @@
def recompileDictionary(project, dictionaryName, Closure closure) {
project.javaexec {
- main = "org.apache.lucene.analysis.ja.util.DictionaryBuilder"
+ main = "org.apache.lucene.analysis.ja.dict.DictionaryBuilder"
classpath = project.sourceSets.main.runtimeClasspath
jvmArgs '-Xmx1G'
diff --git a/gradle/generation/nori.gradle b/gradle/generation/nori.gradle
index fc10f0f561e8..63a857e4a733 100644
--- a/gradle/generation/nori.gradle
+++ b/gradle/generation/nori.gradle
@@ -19,7 +19,7 @@
def recompileDictionary(project, dictionaryName, Closure closure) {
project.javaexec {
- main = "org.apache.lucene.analysis.ko.util.DictionaryBuilder"
+ main = "org.apache.lucene.analysis.ko.dict.DictionaryBuilder"
classpath = project.sourceSets.main.runtimeClasspath
jvmArgs '-Xmx1G'
diff --git a/lucene/analysis/kuromoji/src/java/module-info.java b/lucene/analysis/kuromoji/src/java/module-info.java
index 0cd096087f12..f2040f628a19 100644
--- a/lucene/analysis/kuromoji/src/java/module-info.java
+++ b/lucene/analysis/kuromoji/src/java/module-info.java
@@ -24,7 +24,6 @@
exports org.apache.lucene.analysis.ja.completion;
exports org.apache.lucene.analysis.ja.dict;
exports org.apache.lucene.analysis.ja.tokenattributes;
- exports org.apache.lucene.analysis.ja.util;
opens org.apache.lucene.analysis.ja to
org.apache.lucene.core;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseReadingFormFilter.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseReadingFormFilter.java
index dcc80296e373..046eeb30a312 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseReadingFormFilter.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseReadingFormFilter.java
@@ -19,8 +19,8 @@
import java.io.IOException;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.ja.dict.ToStringUtil;
import org.apache.lucene.analysis.ja.tokenattributes.ReadingAttribute;
-import org.apache.lucene.analysis.ja.util.ToStringUtil;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
/**
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java
index a933525b2f04..fcc062ca683f 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java
@@ -28,6 +28,7 @@
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.ja.dict.CharacterDefinition;
import org.apache.lucene.analysis.ja.dict.ConnectionCosts;
+import org.apache.lucene.analysis.ja.dict.DictionaryBuilder;
import org.apache.lucene.analysis.ja.dict.JaMorphData;
import org.apache.lucene.analysis.ja.dict.TokenInfoDictionary;
import org.apache.lucene.analysis.ja.dict.TokenInfoFST;
@@ -264,8 +265,7 @@ public JapaneseTokenizer(
/**
* Create a new JapaneseTokenizer, supplying a custom system dictionary and unknown dictionary.
* This constructor provides an entry point for users that want to construct custom language
- * models that can be used as input to {@link
- * org.apache.lucene.analysis.ja.util.DictionaryBuilder}.
+ * models that can be used as input to {@link DictionaryBuilder}.
*
* @param factory the AttributeFactory to use
* @param systemDictionary a custom known token dictionary
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/CSVUtil.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/CSVUtil.java
similarity index 97%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/CSVUtil.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/CSVUtil.java
index 6b66c56ece66..2f0c706de525 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/CSVUtil.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/CSVUtil.java
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** Utility class for parsing CSV text */
-public final class CSVUtil {
+final class CSVUtil {
private static final char QUOTE = '"';
private static final char COMMA = ',';
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/ConnectionCostsBuilder.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ConnectionCostsBuilder.java
similarity index 94%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/ConnectionCostsBuilder.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ConnectionCostsBuilder.java
index bfd8dd0d17c9..52a329f85db7 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/ConnectionCostsBuilder.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ConnectionCostsBuilder.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.io.IOException;
import java.io.LineNumberReader;
@@ -22,10 +22,9 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
-import org.apache.lucene.analysis.ja.dict.ConnectionCosts;
import org.apache.lucene.analysis.morph.ConnectionCostsWriter;
-class ConnectionCostsBuilder {
+final class ConnectionCostsBuilder {
private ConnectionCostsBuilder() {}
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/DictionaryBuilder.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/DictionaryBuilder.java
similarity index 94%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/DictionaryBuilder.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/DictionaryBuilder.java
index d547dcb122d9..676c37aaeb55 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/DictionaryBuilder.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/DictionaryBuilder.java
@@ -14,19 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Locale;
-import org.apache.lucene.analysis.ja.dict.DictionaryConstants;
/**
* Tool to build dictionaries. Usage:
*
*
- * java -cp [lucene classpath] org.apache.lucene.analysis.ja.util.DictionaryBuilder \
+ * java -cp [lucene classpath] org.apache.lucene.analysis.ja.dict.DictionaryBuilder \
* ${inputDir} ${outputDir} ${encoding} ${normalizeEntry}
*
*
@@ -44,7 +43,7 @@
*
* @lucene.experimental
*/
-public class DictionaryBuilder {
+public final class DictionaryBuilder {
/** Format of the dictionary. */
public enum DictionaryFormat {
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/DictionaryConstants.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/DictionaryConstants.java
index 3046beef3e63..f58a1521c1b8 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/DictionaryConstants.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/DictionaryConstants.java
@@ -17,7 +17,7 @@
package org.apache.lucene.analysis.ja.dict;
/** Dictionary constants */
-public final class DictionaryConstants {
+final class DictionaryConstants {
/** Codec header of the dictionary file. */
public static final String DICT_HEADER = "kuromoji_dict";
/** Codec header of the dictionary mapping file. */
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/ToStringUtil.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ToStringUtil.java
similarity index 99%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/ToStringUtil.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ToStringUtil.java
index cb2da9035f1b..0d8232beba15 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/ToStringUtil.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ToStringUtil.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.io.IOException;
import java.util.HashMap;
/** Utility class for english translations of morphological data, used only for debugging. */
-public class ToStringUtil {
+public final class ToStringUtil {
// a translation map for parts of speech, only used for reflectWith
private static final HashMap posTranslations = new HashMap<>();
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryBuilder.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryBuilder.java
similarity index 97%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryBuilder.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryBuilder.java
index 2f34384c2676..0570d5147082 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryBuilder.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryBuilder.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.io.BufferedReader;
import java.io.IOException;
@@ -28,14 +28,14 @@
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.apache.lucene.analysis.ja.util.DictionaryBuilder.DictionaryFormat;
+import org.apache.lucene.analysis.ja.dict.DictionaryBuilder.DictionaryFormat;
import org.apache.lucene.util.IntsRefBuilder;
import org.apache.lucene.util.fst.FST;
import org.apache.lucene.util.fst.FSTCompiler;
import org.apache.lucene.util.fst.PositiveIntOutputs;
/** */
-class TokenInfoDictionaryBuilder {
+final class TokenInfoDictionaryBuilder {
private final String encoding;
private final Normalizer.Form normalForm;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryEntryWriter.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryEntryWriter.java
similarity index 97%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryEntryWriter.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryEntryWriter.java
index 618047825f2e..51709148490c 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryEntryWriter.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryEntryWriter.java
@@ -14,18 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
-import org.apache.lucene.analysis.ja.dict.TokenInfoMorphData;
import org.apache.lucene.analysis.morph.DictionaryEntryWriter;
import org.apache.lucene.store.DataOutput;
import org.apache.lucene.util.ArrayUtil;
/** Writes system dictionary entries */
-class TokenInfoDictionaryEntryWriter extends DictionaryEntryWriter {
+final class TokenInfoDictionaryEntryWriter extends DictionaryEntryWriter {
private static final int ID_LIMIT = 8192;
TokenInfoDictionaryEntryWriter(int size) {
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryWriter.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryWriter.java
similarity index 90%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryWriter.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryWriter.java
index fbdf65f34ce7..f8da2391d632 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/TokenInfoDictionaryWriter.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoDictionaryWriter.java
@@ -14,17 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Objects;
-import org.apache.lucene.analysis.ja.dict.DictionaryConstants;
-import org.apache.lucene.analysis.ja.dict.TokenInfoDictionary;
import org.apache.lucene.util.fst.FST;
-class TokenInfoDictionaryWriter
+final class TokenInfoDictionaryWriter
extends org.apache.lucene.analysis.morph.BinaryDictionaryWriter {
private FST fst;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoMorphData.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoMorphData.java
index d743a7faca67..ab31e097e6f4 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoMorphData.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoMorphData.java
@@ -26,7 +26,7 @@
import org.apache.lucene.util.IOSupplier;
/** Morphological information for system dictionary. */
-public class TokenInfoMorphData implements JaMorphData {
+class TokenInfoMorphData implements JaMorphData {
private final ByteBuffer buffer;
private final String[] posDict;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/UnknownDictionaryBuilder.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UnknownDictionaryBuilder.java
similarity index 96%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/UnknownDictionaryBuilder.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UnknownDictionaryBuilder.java
index e2a4338d0ec0..2e5916801385 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/UnknownDictionaryBuilder.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UnknownDictionaryBuilder.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.io.IOException;
import java.io.LineNumberReader;
@@ -25,9 +25,8 @@
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
-import org.apache.lucene.analysis.ja.dict.CharacterDefinition;
-class UnknownDictionaryBuilder {
+final class UnknownDictionaryBuilder {
private static final String NGRAM_DICTIONARY_ENTRY = "NGRAM,5,5,-32768,記号,一般,*,*,*,*,*,*,*";
private final String encoding;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/UnknownDictionaryWriter.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UnknownDictionaryWriter.java
similarity index 89%
rename from lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/UnknownDictionaryWriter.java
rename to lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UnknownDictionaryWriter.java
index 84000fdf0de3..57e3c8298514 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/UnknownDictionaryWriter.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UnknownDictionaryWriter.java
@@ -14,17 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.io.IOException;
import java.nio.file.Path;
-import org.apache.lucene.analysis.ja.dict.CharacterDefinition;
-import org.apache.lucene.analysis.ja.dict.DictionaryConstants;
-import org.apache.lucene.analysis.ja.dict.UnknownDictionary;
import org.apache.lucene.analysis.morph.BinaryDictionaryWriter;
import org.apache.lucene.analysis.morph.CharacterDefinitionWriter;
-class UnknownDictionaryWriter extends BinaryDictionaryWriter {
+final class UnknownDictionaryWriter extends BinaryDictionaryWriter {
private final CharacterDefinitionWriter characterDefinition =
new CharacterDefinitionWriter<>(
CharacterDefinition.class,
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
index 12dd27d95845..52604c4e1952 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
@@ -25,7 +25,6 @@
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-import org.apache.lucene.analysis.ja.util.CSVUtil;
import org.apache.lucene.analysis.morph.Dictionary;
import org.apache.lucene.util.IntsRefBuilder;
import org.apache.lucene.util.fst.FST;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserMorphData.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserMorphData.java
index 1f6907052e0f..be895f1268a6 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserMorphData.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserMorphData.java
@@ -19,8 +19,6 @@
import static org.apache.lucene.analysis.ja.dict.UserDictionary.CUSTOM_DICTIONARY_WORD_ID_OFFSET;
import static org.apache.lucene.analysis.ja.dict.UserDictionary.INTERNAL_SEPARATOR;
-import org.apache.lucene.analysis.ja.util.CSVUtil;
-
/** Morphological information for user dictionary. */
final class UserMorphData implements JaMorphData {
public static final int WORD_COST = -100000;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/InflectionAttributeImpl.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/InflectionAttributeImpl.java
index 36a04dce0890..01857e3a4c8e 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/InflectionAttributeImpl.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/InflectionAttributeImpl.java
@@ -17,7 +17,7 @@
package org.apache.lucene.analysis.ja.tokenattributes;
import org.apache.lucene.analysis.ja.Token;
-import org.apache.lucene.analysis.ja.util.ToStringUtil;
+import org.apache.lucene.analysis.ja.dict.ToStringUtil;
import org.apache.lucene.util.AttributeImpl;
import org.apache.lucene.util.AttributeReflector;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/PartOfSpeechAttributeImpl.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/PartOfSpeechAttributeImpl.java
index 464adbdf7ad3..9dbea1a99447 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/PartOfSpeechAttributeImpl.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/PartOfSpeechAttributeImpl.java
@@ -17,7 +17,7 @@
package org.apache.lucene.analysis.ja.tokenattributes;
import org.apache.lucene.analysis.ja.Token;
-import org.apache.lucene.analysis.ja.util.ToStringUtil;
+import org.apache.lucene.analysis.ja.dict.ToStringUtil;
import org.apache.lucene.util.AttributeImpl;
import org.apache.lucene.util.AttributeReflector;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/ReadingAttributeImpl.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/ReadingAttributeImpl.java
index bada2421bed9..b3a721545404 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/ReadingAttributeImpl.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/tokenattributes/ReadingAttributeImpl.java
@@ -17,7 +17,7 @@
package org.apache.lucene.analysis.ja.tokenattributes;
import org.apache.lucene.analysis.ja.Token;
-import org.apache.lucene.analysis.ja.util.ToStringUtil;
+import org.apache.lucene.analysis.ja.dict.ToStringUtil;
import org.apache.lucene.util.AttributeImpl;
import org.apache.lucene.util.AttributeReflector;
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/package-info.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/package-info.java
deleted file mode 100644
index e0abc576d836..000000000000
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/util/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/** Kuromoji utility classes. */
-package org.apache.lucene.analysis.ja.util;
diff --git a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/TestCSVUtil.java b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestCSVUtil.java
similarity index 95%
rename from lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/TestCSVUtil.java
rename to lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestCSVUtil.java
index 072a93726d85..0542c3926cac 100644
--- a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/TestCSVUtil.java
+++ b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestCSVUtil.java
@@ -14,10 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja;
+package org.apache.lucene.analysis.ja.dict;
import java.io.IOException;
-import org.apache.lucene.analysis.ja.util.CSVUtil;
import org.apache.lucene.tests.util.LuceneTestCase;
/*
diff --git a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestExternalDictionary.java b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestExternalDictionary.java
index 5423d7a76cbf..6aaae0cc7cea 100644
--- a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestExternalDictionary.java
+++ b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestExternalDictionary.java
@@ -25,7 +25,6 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
-import org.apache.lucene.analysis.ja.util.DictionaryBuilder;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.junit.Before;
diff --git a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/util/TestToStringUtil.java b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestToStringUtil.java
similarity index 99%
rename from lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/util/TestToStringUtil.java
rename to lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestToStringUtil.java
index cbe0554a9714..1650aa7ec05c 100644
--- a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/util/TestToStringUtil.java
+++ b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestToStringUtil.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import java.util.HashMap;
import java.util.Map;
diff --git a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestTokenInfoDictionary.java b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestTokenInfoDictionary.java
index 0320d6e5f13b..f520687f3879 100644
--- a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestTokenInfoDictionary.java
+++ b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestTokenInfoDictionary.java
@@ -27,9 +27,7 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
-import org.apache.lucene.analysis.ja.util.DictionaryBuilder;
-import org.apache.lucene.analysis.ja.util.DictionaryBuilder.DictionaryFormat;
-import org.apache.lucene.analysis.ja.util.ToStringUtil;
+import org.apache.lucene.analysis.ja.dict.DictionaryBuilder.DictionaryFormat;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.apache.lucene.util.IntsRef;
import org.apache.lucene.util.IntsRefBuilder;
diff --git a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/util/TestUnknownDictionary.java b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestUnknownDictionary.java
similarity index 98%
rename from lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/util/TestUnknownDictionary.java
rename to lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestUnknownDictionary.java
index a2e74c710f7d..5ccdaa6b926c 100644
--- a/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/util/TestUnknownDictionary.java
+++ b/lucene/analysis/kuromoji/src/test/org/apache/lucene/analysis/ja/dict/TestUnknownDictionary.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ja.util;
+package org.apache.lucene.analysis.ja.dict;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.junit.Test;
diff --git a/lucene/analysis/nori/src/java/module-info.java b/lucene/analysis/nori/src/java/module-info.java
index 77e678015244..49edd98a7ffb 100644
--- a/lucene/analysis/nori/src/java/module-info.java
+++ b/lucene/analysis/nori/src/java/module-info.java
@@ -23,7 +23,6 @@
exports org.apache.lucene.analysis.ko;
exports org.apache.lucene.analysis.ko.dict;
exports org.apache.lucene.analysis.ko.tokenattributes;
- exports org.apache.lucene.analysis.ko.util;
provides org.apache.lucene.analysis.TokenizerFactory with
org.apache.lucene.analysis.ko.KoreanTokenizerFactory;
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/KoreanTokenizer.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/KoreanTokenizer.java
index 028d9dd54d1f..318ae4733ca0 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/KoreanTokenizer.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/KoreanTokenizer.java
@@ -197,7 +197,7 @@ public KoreanTokenizer(
/**
* Create a new KoreanTokenizer supplying a custom system dictionary and unknown dictionary. This
* constructor provides an entry point for users that want to construct custom language models
- * that can be used as input to {@link org.apache.lucene.analysis.ko.util.DictionaryBuilder}.
+ * that can be used as input to {@link org.apache.lucene.analysis.ko.dict.DictionaryBuilder}.
*
* @param factory the AttributeFactory to use
* @param systemDictionary a custom known token dictionary
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/CSVUtil.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/CSVUtil.java
similarity index 97%
rename from lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/CSVUtil.java
rename to lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/CSVUtil.java
index 40b179a9ea45..6d603a1835dc 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/CSVUtil.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/CSVUtil.java
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** Utility class for parsing CSV text */
-public final class CSVUtil {
+final class CSVUtil {
private static final char QUOTE = '"';
private static final char COMMA = ',';
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/ConnectionCostsBuilder.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/ConnectionCostsBuilder.java
similarity index 94%
rename from lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/ConnectionCostsBuilder.java
rename to lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/ConnectionCostsBuilder.java
index 31505fb45c8b..c42d7f29203b 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/ConnectionCostsBuilder.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/ConnectionCostsBuilder.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import java.io.IOException;
import java.io.LineNumberReader;
@@ -22,10 +22,9 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
-import org.apache.lucene.analysis.ko.dict.ConnectionCosts;
import org.apache.lucene.analysis.morph.ConnectionCostsWriter;
-class ConnectionCostsBuilder {
+final class ConnectionCostsBuilder {
private ConnectionCostsBuilder() {}
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/DictionaryBuilder.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/DictionaryBuilder.java
similarity index 93%
rename from lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/DictionaryBuilder.java
rename to lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/DictionaryBuilder.java
index 0e8f11f0cf8e..e30d58f6abdf 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/DictionaryBuilder.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/DictionaryBuilder.java
@@ -14,15 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
-import org.apache.lucene.analysis.ko.dict.DictionaryConstants;
/** Tool to build dictionaries. */
-public class DictionaryBuilder {
+public final class DictionaryBuilder {
private DictionaryBuilder() {}
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/DictionaryConstants.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/DictionaryConstants.java
index 4f8761e59e7e..aee489eb8806 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/DictionaryConstants.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/DictionaryConstants.java
@@ -17,7 +17,7 @@
package org.apache.lucene.analysis.ko.dict;
/** Dictionary constants */
-public final class DictionaryConstants {
+final class DictionaryConstants {
/** Codec header of the dictionary file. */
public static final String DICT_HEADER = "ko_dict";
/** Codec header of the dictionary mapping file. */
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryBuilder.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryBuilder.java
similarity index 98%
rename from lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryBuilder.java
rename to lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryBuilder.java
index 020d241e4ec2..1692f96ead40 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryBuilder.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryBuilder.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import java.io.BufferedReader;
import java.io.IOException;
@@ -33,7 +33,7 @@
import org.apache.lucene.util.fst.FSTCompiler;
import org.apache.lucene.util.fst.PositiveIntOutputs;
-class TokenInfoDictionaryBuilder {
+final class TokenInfoDictionaryBuilder {
/**
* Internal word id - incrementally assigned as entries are read and added. This will be byte
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryEntryWriter.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryEntryWriter.java
similarity index 96%
rename from lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryEntryWriter.java
rename to lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryEntryWriter.java
index e18cae357d34..4f77c1903e51 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryEntryWriter.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryEntryWriter.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import java.io.IOException;
import java.io.OutputStream;
@@ -23,14 +23,12 @@
import java.util.Arrays;
import java.util.List;
import org.apache.lucene.analysis.ko.POS;
-import org.apache.lucene.analysis.ko.dict.KoMorphData;
-import org.apache.lucene.analysis.ko.dict.TokenInfoMorphData;
import org.apache.lucene.analysis.morph.DictionaryEntryWriter;
import org.apache.lucene.store.DataOutput;
import org.apache.lucene.util.ArrayUtil;
/** Writes system dictionary entries. */
-class TokenInfoDictionaryEntryWriter extends DictionaryEntryWriter {
+final class TokenInfoDictionaryEntryWriter extends DictionaryEntryWriter {
private static final int ID_LIMIT = 8192;
TokenInfoDictionaryEntryWriter(int size) {
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryWriter.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryWriter.java
similarity index 88%
rename from lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryWriter.java
rename to lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryWriter.java
index 78a9acaff8a3..1a4fa52e43a6 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/TokenInfoDictionaryWriter.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoDictionaryWriter.java
@@ -14,18 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Objects;
-import org.apache.lucene.analysis.ko.dict.DictionaryConstants;
-import org.apache.lucene.analysis.ko.dict.TokenInfoDictionary;
import org.apache.lucene.analysis.morph.BinaryDictionaryWriter;
import org.apache.lucene.util.fst.FST;
-class TokenInfoDictionaryWriter extends BinaryDictionaryWriter {
+final class TokenInfoDictionaryWriter extends BinaryDictionaryWriter {
private FST fst;
TokenInfoDictionaryWriter(int size) {
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoMorphData.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoMorphData.java
index c8046b2e6041..b23be046b0c6 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoMorphData.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/TokenInfoMorphData.java
@@ -27,7 +27,7 @@
import org.apache.lucene.util.IOSupplier;
/** Morphological information for system dictionary. */
-public class TokenInfoMorphData implements KoMorphData {
+class TokenInfoMorphData implements KoMorphData {
private final ByteBuffer buffer;
private final POS.Tag[] posDict;
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/UnknownDictionaryBuilder.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/UnknownDictionaryBuilder.java
similarity index 96%
rename from lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/UnknownDictionaryBuilder.java
rename to lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/UnknownDictionaryBuilder.java
index 634c2a599ee3..4c6234f9a033 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/UnknownDictionaryBuilder.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/UnknownDictionaryBuilder.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import java.io.IOException;
import java.io.LineNumberReader;
@@ -25,9 +25,8 @@
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
-import org.apache.lucene.analysis.ko.dict.CharacterDefinition;
-class UnknownDictionaryBuilder {
+final class UnknownDictionaryBuilder {
private static final String NGRAM_DICTIONARY_ENTRY = "NGRAM,1801,3559,3677,SY,*,*,*,*,*,*,*";
private String encoding;
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/UnknownDictionaryWriter.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/UnknownDictionaryWriter.java
similarity index 89%
rename from lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/UnknownDictionaryWriter.java
rename to lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/UnknownDictionaryWriter.java
index 82285e1c78b3..24b1a21839c8 100644
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/UnknownDictionaryWriter.java
+++ b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/dict/UnknownDictionaryWriter.java
@@ -14,17 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import java.io.IOException;
import java.nio.file.Path;
-import org.apache.lucene.analysis.ko.dict.CharacterDefinition;
-import org.apache.lucene.analysis.ko.dict.DictionaryConstants;
-import org.apache.lucene.analysis.ko.dict.UnknownDictionary;
import org.apache.lucene.analysis.morph.BinaryDictionaryWriter;
import org.apache.lucene.analysis.morph.CharacterDefinitionWriter;
-class UnknownDictionaryWriter extends BinaryDictionaryWriter {
+final class UnknownDictionaryWriter extends BinaryDictionaryWriter {
private final org.apache.lucene.analysis.morph.CharacterDefinitionWriter
characterDefinition =
diff --git a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/package-info.java b/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/package-info.java
deleted file mode 100644
index 99241d63370e..000000000000
--- a/lucene/analysis/nori/src/java/org/apache/lucene/analysis/ko/util/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/** Nori utility classes. */
-package org.apache.lucene.analysis.ko.util;
diff --git a/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestExternalDictionary.java b/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestExternalDictionary.java
index 2ba7cee6a37c..b8d84f916665 100644
--- a/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestExternalDictionary.java
+++ b/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestExternalDictionary.java
@@ -25,7 +25,6 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
-import org.apache.lucene.analysis.ko.util.DictionaryBuilder;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.junit.Before;
diff --git a/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestTokenInfoDictionary.java b/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestTokenInfoDictionary.java
index 6948c4aa851e..514021d3384a 100644
--- a/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestTokenInfoDictionary.java
+++ b/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestTokenInfoDictionary.java
@@ -28,7 +28,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import org.apache.lucene.analysis.ko.POS;
-import org.apache.lucene.analysis.ko.util.DictionaryBuilder;
+// import org.apache.lucene.analysis.ko.dict.DictionaryBuilder;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.apache.lucene.util.IntsRef;
import org.apache.lucene.util.IntsRefBuilder;
diff --git a/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/util/TestUnknownDictionary.java b/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestUnknownDictionary.java
similarity index 98%
rename from lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/util/TestUnknownDictionary.java
rename to lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestUnknownDictionary.java
index c619ad36072e..dbce890deda1 100644
--- a/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/util/TestUnknownDictionary.java
+++ b/lucene/analysis/nori/src/test/org/apache/lucene/analysis/ko/dict/TestUnknownDictionary.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.lucene.analysis.ko.util;
+package org.apache.lucene.analysis.ko.dict;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.junit.Test;