Javadoc.
diff --git a/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java b/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java
index ee7f556..4155a24 100644
--- a/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java
+++ b/src/main/java/org/apache/commons/text/lookup/JavaPlatformStringLookup.java
@@ -1,147 +1,186 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- * contributor license agreements. See the NOTICE file distributed with

- * this work for additional information regarding copyright ownership.

- * The ASF licenses this file to You under the Apache license, Version 2.0

- * (the "License"); you may not use this file except in compliance with

- * the License. You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the license for the specific language governing permissions and

- * limitations under the license.

- */

-package org.apache.commons.text.lookup;

-

-import java.util.Locale;

-

-import org.apache.commons.lang3.StringUtils;

-

-/**

- * Looks up keys related to Java: Java version, JRE version, VM version, and so on.

- *

- * @since 1.3

- */

-final class JavaPlatformStringLookup extends AbstractStringLookup {

-

-    /**

-     * Defines the singleton for this class.

-     */

-    static final JavaPlatformStringLookup INSTANCE = new JavaPlatformStringLookup();

-

-    /**

-     * No need to build instances for now.

-     */

-    private JavaPlatformStringLookup() {

-        // empty

-    }

-

-    /**

-     * Accessible through the Lookup key {@code hardware}.

-     *

-     * @return hardware processor information.

-     */

-    String getHardware() {

-        return "processors: " + Runtime.getRuntime().availableProcessors() + ", architecture: "

-                + getSystemProperty("os.arch") + this.getSystemProperty("-", "sun.arch.data.model")

-                + this.getSystemProperty(", instruction sets: ", "sun.cpu.isalist");

-    }

-

-    /**

-     * Accessible through the Lookup key {@code locale}.

-     *

-     * @return system locale and file encoding information.

-     */

-    String getLocale() {

-        return "default locale: " + Locale.getDefault() + ", platform encoding: " + getSystemProperty("file.encoding");

-    }

-

-    /**

-     * Accessible through the Lookup key {@code os}.

-     *

-     * @return operating system information.

-     */

-    String getOperatingSystem() {

-        return getSystemProperty("os.name") + " " + getSystemProperty("os.version")

-                + getSystemProperty(" ", "sun.os.patch.level") + ", architecture: " + getSystemProperty("os.arch")

-                + getSystemProperty("-", "sun.arch.data.model");

-    }

-

-    /**

-     * Accessible through the Lookup key {@code runtime}.

-     *

-     * @return Java Runtime Environment information.

-     */

-    String getRuntime() {

-        return getSystemProperty("java.runtime.name") + " (build " + getSystemProperty("java.runtime.version")

-                + ") from " + getSystemProperty("java.vendor");

-    }

-

-    /**

-     * Gets the given system property.

-     *

-     * @param name

-     *            a system property name.

-     * @return a system property value.

-     */

-    private String getSystemProperty(final String name) {

-        return SystemPropertyStringLookup.INSTANCE.lookup(name);

-    }

-

-    /**

-     * Gets the given system property.

-     *

-     * @param prefix

-     *            the prefix to use for the result string

-     * @param name

-     *            a system property name.

-     * @return the prefix + a system property value.

-     */

-    private String getSystemProperty(final String prefix, final String name) {

-        final String value = getSystemProperty(name);

-        if (StringUtils.isEmpty(value)) {

-            return StringUtils.EMPTY;

-        }

-        return prefix + value;

-    }

-

-    /**

-     * Accessible through the Lookup key {@code vm}.

-     *

-     * @return Java Virtual Machine information.

-     */

-    String getVirtualMachine() {

-        return getSystemProperty("java.vm.name") + " (build " + getSystemProperty("java.vm.version") + ", "

-                + getSystemProperty("java.vm.info") + ")";

-    }

-

-    /**

-     * Looks up the value of the Java platform key.

-     *

-     * @param key

-     *            the key to be looked up, may be null

-     * @return The value of the environment variable.

-     */

-    @Override

-    public String lookup(final String key) {

-        switch (key) {

-        case "version":

-            return "Java version " + getSystemProperty("java.version");

-        case "runtime":

-            return getRuntime();

-        case "vm":

-            return getVirtualMachine();

-        case "os":

-            return getOperatingSystem();

-        case "hardware":

-            return getHardware();

-        case "locale":

-            return getLocale();

-        default:

-            throw new IllegalArgumentException(key);

-        }

-    }

-}

+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.commons.text.lookup;
+
+import java.util.Locale;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * Looks up keys related to Java: Java version, JRE version, VM version, and so on.
+ * <p>
+ * The lookup keys with examples are:
+ * </p>
+ * <ul>
+ * <li><b>version</b>: "Java version 1.8.0_181"</li>
+ * <li><b>runtime</b>: "Java(TM) SE Runtime Environment (build 1.8.0_181-b13) from Oracle Corporation"</li>
+ * <li><b>vm</b>: "Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)"</li>
+ * <li><b>os</b>: "Windows 10 10.0, architecture: amd64-64"</li>
+ * <li><b>hardware</b>: "processors: 4, architecture: amd64-64, instruction sets: amd64"</li>
+ * <li><b>locale</b>: "default locale: en_US, platform encoding: iso-8859-1"</li>
+ * </ul>
+ * 
+ * @since 1.3
+ */
+final class JavaPlatformStringLookup extends AbstractStringLookup {
+
+    private static final String KEY_LOCALE = "locale";
+    private static final String KEY_HARDWARE = "hardware";
+    private static final String KEY_OS = "os";
+    private static final String KEY_VM = "vm";
+    private static final String KEY_RUNTIME = "runtime";
+    private static final String KEY_VERSION = "version";
+
+    /**
+     * Defines the singleton for this class.
+     */
+    static final JavaPlatformStringLookup INSTANCE = new JavaPlatformStringLookup();
+
+    public static void main(String[] args) {
+        System.out.println(JavaPlatformStringLookup.class);
+        System.out.printf("%s = %s\n", KEY_VERSION, JavaPlatformStringLookup.INSTANCE.lookup(KEY_VERSION));
+        System.out.printf("%s = %s\n", KEY_RUNTIME, JavaPlatformStringLookup.INSTANCE.lookup(KEY_RUNTIME));
+        System.out.printf("%s = %s\n", KEY_VM, JavaPlatformStringLookup.INSTANCE.lookup(KEY_VM));
+        System.out.printf("%s = %s\n", KEY_OS, JavaPlatformStringLookup.INSTANCE.lookup(KEY_OS));
+        System.out.printf("%s = %s\n", KEY_HARDWARE, JavaPlatformStringLookup.INSTANCE.lookup(KEY_HARDWARE));
+        System.out.printf("%s = %s\n", KEY_LOCALE, JavaPlatformStringLookup.INSTANCE.lookup(KEY_LOCALE));
+    }
+
+    /**
+     * No need to build instances for now.
+     */
+    private JavaPlatformStringLookup() {
+        // empty
+    }
+
+    /**
+     * Accessible through the Lookup key {@code hardware}.
+     *
+     * @return hardware processor information.
+     */
+    String getHardware() {
+        return "processors: " + Runtime.getRuntime().availableProcessors() + ", architecture: "
+                + getSystemProperty("os.arch") + this.getSystemProperty("-", "sun.arch.data.model")
+                + this.getSystemProperty(", instruction sets: ", "sun.cpu.isalist");
+    }
+
+    /**
+     * Accessible through the Lookup key {@code locale}.
+     *
+     * @return system locale and file encoding information.
+     */
+    String getLocale() {
+        return "default locale: " + Locale.getDefault() + ", platform encoding: " + getSystemProperty("file.encoding");
+    }
+
+    /**
+     * Accessible through the Lookup key {@code os}.
+     *
+     * @return operating system information.
+     */
+    String getOperatingSystem() {
+        return getSystemProperty("os.name") + " " + getSystemProperty("os.version")
+                + getSystemProperty(" ", "sun.os.patch.level") + ", architecture: " + getSystemProperty("os.arch")
+                + getSystemProperty("-", "sun.arch.data.model");
+    }
+
+    /**
+     * Accessible through the Lookup key {@code runtime}.
+     *
+     * @return Java Runtime Environment information.
+     */
+    String getRuntime() {
+        return getSystemProperty("java.runtime.name") + " (build " + getSystemProperty("java.runtime.version")
+                + ") from " + getSystemProperty("java.vendor");
+    }
+
+    /**
+     * Gets the given system property.
+     *
+     * @param name
+     *            a system property name.
+     * @return a system property value.
+     */
+    private String getSystemProperty(final String name) {
+        return SystemPropertyStringLookup.INSTANCE.lookup(name);
+    }
+
+    /**
+     * Gets the given system property.
+     *
+     * @param prefix
+     *            the prefix to use for the result string
+     * @param name
+     *            a system property name.
+     * @return the prefix + a system property value.
+     */
+    private String getSystemProperty(final String prefix, final String name) {
+        final String value = getSystemProperty(name);
+        if (StringUtils.isEmpty(value)) {
+            return StringUtils.EMPTY;
+        }
+        return prefix + value;
+    }
+
+    /**
+     * Accessible through the Lookup key {@code vm}.
+     *
+     * @return Java Virtual Machine information.
+     */
+    String getVirtualMachine() {
+        return getSystemProperty("java.vm.name") + " (build " + getSystemProperty("java.vm.version") + ", "
+                + getSystemProperty("java.vm.info") + ")";
+    }
+
+    /**
+     * Looks up the value of the Java platform key.
+     * <p>
+     * The lookup keys with examples are:
+     * </p>
+     * <ul>
+     * <li><b>version</b>: "Java version 1.8.0_181"</li>
+     * <li><b>runtime</b>: "Java(TM) SE Runtime Environment (build 1.8.0_181-b13) from Oracle Corporation"</li>
+     * <li><b>vm</b>: "Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)"</li>
+     * <li><b>os</b>: "Windows 10 10.0, architecture: amd64-64"</li>
+     * <li><b>hardware</b>: "processors: 4, architecture: amd64-64, instruction sets: amd64"</li>
+     * <li><b>locale</b>: "default locale: en_US, platform encoding: iso-8859-1"</li>
+     * </ul>
+     *
+     * @param key
+     *            the key to be looked up, may be null
+     * @return The value of the environment variable.
+     */
+    @Override
+    public String lookup(final String key) {
+        switch (key) {
+        case KEY_VERSION:
+            return "Java version " + getSystemProperty("java.version");
+        case KEY_RUNTIME:
+            return getRuntime();
+        case KEY_VM:
+            return getVirtualMachine();
+        case KEY_OS:
+            return getOperatingSystem();
+        case KEY_HARDWARE:
+            return getHardware();
+        case KEY_LOCALE:
+            return getLocale();
+        default:
+            throw new IllegalArgumentException(key);
+        }
+    }
+}
diff --git a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
index 73c3153..86221e6 100644
--- a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
+++ b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
@@ -39,7 +39,7 @@
     public static void clear() {
         ConstantStringLookup.clear();
     }
-    
+
     /**
      * No need to build instances for now.
      */
@@ -154,7 +154,8 @@
      * <li>"env" for the {@link EnvironmentVariableStringLookup}.</li>
      * <li>"java" for the {@link JavaPlatformStringLookup}.</li>
      * <li>"date" for the {@link DateStringLookup}.</li>
-     * <li>"localhost" for the {@link LocalHostStringLookup}, see {@link #localHostStringLookup()} for key names; since 1.3.</li>
+     * <li>"localhost" for the {@link LocalHostStringLookup}, see {@link #localHostStringLookup()} for key names; since
+     * 1.3.</li>
      * <li>"xml" for the {@link XmlStringLookup} since 1.5.</li>
      * <li>"properties" for the {@link PropertiesStringLookup} since 1.5.</li>
      * <li>"script" for the {@link ScriptStringLookup} since 1.5.</li>
@@ -183,7 +184,8 @@
      * <li>"env" for the {@link EnvironmentVariableStringLookup}.</li>
      * <li>"java" for the {@link JavaPlatformStringLookup}.</li>
      * <li>"date" for the {@link DateStringLookup}.</li>
-     * <li>"localhost" for the {@link LocalHostStringLookup}, see {@link #localHostStringLookup()} for key names; since 1.3.</li>
+     * <li>"localhost" for the {@link LocalHostStringLookup}, see {@link #localHostStringLookup()} for key names; since
+     * 1.3.</li>
      * <li>"xml" for the {@link XmlStringLookup} since 1.5.</li>
      * <li>"properties" for the {@link PropertiesStringLookup} since 1.5.</li>
      * <li>"script" for the {@link ScriptStringLookup} since 1.5.</li>
@@ -219,7 +221,8 @@
      * <li>"env" for the {@link EnvironmentVariableStringLookup}.</li>
      * <li>"java" for the {@link JavaPlatformStringLookup}.</li>
      * <li>"date" for the {@link DateStringLookup}.</li>
-     * <li>"localhost" for the {@link LocalHostStringLookup}, see {@link #localHostStringLookup()} for key names; since 1.3.</li>
+     * <li>"localhost" for the {@link LocalHostStringLookup}, see {@link #localHostStringLookup()} for key names; since
+     * 1.3.</li>
      * <li>"xml" for the {@link XmlStringLookup} since 1.5.</li>
      * <li>"properties" for the {@link PropertiesStringLookup} since 1.5.</li>
      * <li>"script" for the {@link ScriptStringLookup} since 1.5.</li>
@@ -251,7 +254,8 @@
      * <li>"env" for the {@link EnvironmentVariableStringLookup}.</li>
      * <li>"java" for the {@link JavaPlatformStringLookup}.</li>
      * <li>"date" for the {@link DateStringLookup}.</li>
-     * <li>"localhost" for the {@link LocalHostStringLookup}, see {@link #localHostStringLookup()} for key names; since 1.3.</li>
+     * <li>"localhost" for the {@link LocalHostStringLookup}, see {@link #localHostStringLookup()} for key names; since
+     * 1.3.</li>
      * <li>"xml" for the {@link XmlStringLookup} since 1.5.</li>
      * <li>"properties" for the {@link PropertiesStringLookup} since 1.5.</li>
      * <li>"script" for the {@link ScriptStringLookup} since 1.5.</li>
@@ -272,8 +276,20 @@
     }
 
     /**
-     * Returns the JavaPlatformStringLookup singleton instance.
-     *
+     * Returns the JavaPlatformStringLookup singleton instance. Looks up keys related to Java: Java version, JRE
+     * version, VM version, and so on.
+     * <p>
+     * The lookup keys with examples are:
+     * </p>
+     * <ul>
+     * <li><b>version</b>: "Java version 1.8.0_181"</li>
+     * <li><b>runtime</b>: "Java(TM) SE Runtime Environment (build 1.8.0_181-b13) from Oracle Corporation"</li>
+     * <li><b>vm</b>: "Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)"</li>
+     * <li><b>os</b>: "Windows 10 10.0, architecture: amd64-64"</li>
+     * <li><b>hardware</b>: "processors: 4, architecture: amd64-64, instruction sets: amd64"</li>
+     * <li><b>locale</b>: "default locale: en_US, platform encoding: iso-8859-1"</li>
+     * </ul>
+     * 
      * @return the JavaPlatformStringLookup singleton instance.
      */
     public StringLookup javaPlatformStringLookup() {
@@ -355,7 +371,9 @@
      * <p>
      * For example: "MyKey".
      * </p>
-     * @param bundleName Only lookup in this bundle. 
+     * 
+     * @param bundleName
+     *            Only lookup in this bundle.
      * @return a ResourceBundleStringLookup instance for the given bundle name.
      * @since 1.5
      */