changeset 4777:22ebb2f1ab04

Merge
author alanb
date Fri, 03 Mar 2017 09:05:36 +0000
parents 2310f9c69a12 6ba2130e87bd
children a1af3e797767
files .hgtags src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor6.java src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java
diffstat 54 files changed, 3211 insertions(+), 1641 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Fri Feb 24 11:07:03 2017 +0000
+++ b/.hgtags	Fri Mar 03 09:05:36 2017 +0000
@@ -402,3 +402,4 @@
 6f91e41163bc09e9b3ec72e8d1185f39296ee5d4 jdk-9+156
 162b521af7bb097019a8afaa44e1f8069ce274eb jdk-9+157
 4eb737a8d439f49a197e8000de26c6580cb4d57b jdk-9+158
+39449d2a6398fee779630f041c55c0466f5fd2c0 jdk-9+159
--- a/src/java.compiler/share/classes/javax/lang/model/element/TypeElement.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/java.compiler/share/classes/javax/lang/model/element/TypeElement.java	Fri Mar 03 09:05:36 2017 +0000
@@ -75,8 +75,9 @@
      * originating source of information about the type.  For example,
      * if the information about the type is originating from a source
      * file, the elements will be returned in source code order.
-     * (However, in that case the the ordering of elements, such as a
-     * default constructor, is not specified.)
+     * (However, in that case the the ordering of {@linkplain
+     * Elements.Origin#MANDATED implicitly declared} elements, such as
+     * default constructors, is not specified.)
      *
      * @return the enclosed elements in proper order, or an empty list if none
      *
--- a/src/java.compiler/share/classes/javax/lang/model/type/TypeMirror.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/java.compiler/share/classes/javax/lang/model/type/TypeMirror.java	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,9 +34,9 @@
  * Represents a type in the Java programming language.
  * Types include primitive types, declared types (class and interface types),
  * array types, type variables, and the null type.
- * Also represented are wildcard type arguments,
- * the signature and return types of executables,
- * and pseudo-types corresponding to packages and to the keyword {@code void}.
+ * Also represented are wildcard type arguments, the signature and
+ * return types of executables, and pseudo-types corresponding to
+ * packages, modules, and the keyword {@code void}.
  *
  * <p> Types should be compared using the utility methods in {@link
  * Types}.  There is no guarantee that any particular type will always
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor6.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor6.java	Fri Mar 03 09:05:36 2017 +0000
@@ -79,9 +79,9 @@
     protected AbstractAnnotationValueVisitor6() {}
 
     /**
-     * Visits an annotation value as if by passing itself to that
+     * Visits any annotation value as if by passing itself to that
      * value's {@link AnnotationValue#accept accept}.  The invocation
-     * {@code v.visit(av)} is equivalent to {@code av.accept(v, p)}.
+     * {@code v.visit(av, p)} is equivalent to {@code av.accept(v, p)}.
      * @param av {@inheritDoc}
      * @param p  {@inheritDoc}
      */
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor6.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor6.java	Fri Mar 03 09:05:36 2017 +0000
@@ -81,7 +81,7 @@
     /**
      * Visits any program element as if by passing itself to that
      * element's {@link Element#accept accept} method.  The invocation
-     * {@code v.visit(elem)} is equivalent to {@code elem.accept(v,
+     * {@code v.visit(elem, p)} is equivalent to {@code elem.accept(v,
      * p)}.
      *
      * @param e  the element to visit
--- a/src/java.compiler/share/classes/javax/lang/model/util/Types.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/java.compiler/share/classes/javax/lang/model/util/Types.java	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -91,7 +91,7 @@
      * @param t2  the second type
      * @return {@code true} if and only if the first type is a subtype
      *          of the second
-     * @throws IllegalArgumentException if given an executable or package type
+     * @throws IllegalArgumentException if given a type for an executable, package, or module
      * @jls 4.10 Subtyping
      */
     boolean isSubtype(TypeMirror t1, TypeMirror t2);
@@ -103,7 +103,7 @@
      * @param t2  the second type
      * @return {@code true} if and only if the first type is assignable
      *          to the second
-     * @throws IllegalArgumentException if given an executable or package type
+     * @throws IllegalArgumentException if given a type for an executable, package, or module
      * @jls 5.2 Assignment Conversion
      */
     boolean isAssignable(TypeMirror t1, TypeMirror t2);
@@ -114,7 +114,7 @@
      * @param t1  the first type
      * @param t2  the second type
      * @return {@code true} if and only if the first type contains the second
-     * @throws IllegalArgumentException if given an executable or package type
+     * @throws IllegalArgumentException if given a type for an executable, package, or module
      * @jls 4.5.1.1 Type Argument Containment and Equivalence
      */
     boolean contains(TypeMirror t1, TypeMirror t2);
@@ -139,7 +139,7 @@
      *
      * @param t  the type being examined
      * @return the direct supertypes, or an empty list if none
-     * @throws IllegalArgumentException if given an executable or package type
+     * @throws IllegalArgumentException if given a type for an executable, package, or module
      * @jls 4.10 Subtyping
      */
     List<? extends TypeMirror> directSupertypes(TypeMirror t);
@@ -149,7 +149,7 @@
      *
      * @param t  the type to be erased
      * @return the erasure of the given type
-     * @throws IllegalArgumentException if given a package type
+     * @throws IllegalArgumentException if given a type for a package or module
      * @jls 4.6 Type Erasure
      */
     TypeMirror erasure(TypeMirror t);
@@ -181,7 +181,7 @@
      *
      * @param t  the type to be converted
      * @return the result of applying capture conversion
-     * @throws IllegalArgumentException if given an executable or package type
+     * @throws IllegalArgumentException if given a type for an executable, package, or module
      * @jls 5.1.10 Capture Conversion
      */
     TypeMirror capture(TypeMirror t);
@@ -206,9 +206,14 @@
      * Returns a pseudo-type used where no actual type is appropriate.
      * The kind of type to return may be either
      * {@link TypeKind#VOID VOID} or {@link TypeKind#NONE NONE}.
-     * For packages, use
-     * {@link Elements#getPackageElement(CharSequence)}{@code .asType()}
-     * instead.
+     *
+     * <p>To get the pseudo-type corresponding to a package or module,
+     * call {@code asType()} on the element modeling the {@linkplain
+     * PackageElement package} or {@linkplain ModuleElement
+     * module}. Names can be converted to elements for packages or
+     * modules using {@link Elements#getPackageElement(CharSequence)}
+     * or {@link Elements#getModuleElement(CharSequence)},
+     * respectively.
      *
      * @param kind  the kind of type to return
      * @return a pseudo-type of kind {@code VOID} or {@code NONE}
--- a/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -142,6 +142,17 @@
  * files in the {@linkplain java.nio.file.FileSystems#getDefault() default file system.}
  * It is recommended that implementations should support Path objects from any filesystem.</p>
  *
+ *
+ * @apiNote
+ * Some methods on this interface take a {@code Collection<? extends Path>}
+ * instead of {@code Iterable<? extends Path>}.
+ * This is to prevent the possibility of accidentally calling the method
+ * with a single {@code Path} as such an argument, because although
+ * {@code Path} implements {@code Iterable<Path>}, it would almost never be
+ * correct to call these methods with a single {@code Path} and have it be treated as
+ * an {@code Iterable} of its components.
+ *
+ *
  * @author Peter von der Ah&eacute;
  * @since 1.6
  */
@@ -266,6 +277,10 @@
      * Associates the given search path with the given location.  Any
      * previous value will be discarded.
      *
+     * If the location is a module-oriented or output location, any module-specific
+     * associations set up by {@linkplain #setLocationForModule setLocationForModule}
+     * will be cancelled.
+     *
      * @param location a location
      * @param files a list of files, if {@code null} use the default
      * search path for this location
@@ -279,24 +294,18 @@
         throws IOException;
 
     /**
-     * Associates the given search path with the given location.  Any
-     * previous value will be discarded.
+     * Associates the given search path with the given location.
+     * Any previous value will be discarded.
      *
-     * @apiNote
-     * The type of the {@code paths} parameter is a {@code Collection}
-     * and not {@code Iterable}. This is to prevent the possibility of
-     * accidentally calling the method with a single {@code Path} as
-     * the second argument, because although {@code Path} implements
-     * {@code Iterable<Path>}, it would almost never be correct to call
-     * this method with a single {@code Path} and have it be treated as
-     * an {@code Iterable} of its components.
-     *
+     * If the location is a module-oriented or output location, any module-specific
+     * associations set up by {@linkplain #setLocationForModule setLocationForModule}
+     * will be cancelled.
      *
      * @implSpec
      * The default implementation converts each path to a file and calls
      * {@link #getJavaFileObjectsFromFiles getJavaObjectsFromFiles}.
-     * IllegalArgumentException will be thrown if any of the paths
-     * cannot be converted to a file.
+     * {@linkplain IllegalArgumentException IllegalArgumentException}
+     * will be thrown if any of the paths cannot be converted to a file.
      *
      * @param location a location
      * @param paths a list of paths, if {@code null} use the default
@@ -316,6 +325,37 @@
     }
 
     /**
+     * Associates the given search path with the given module and location,
+     * which must be a module-oriented or output location.
+     * Any previous value will be discarded.
+     * This overrides any default association derived from the search path
+     * associated with the location itself.
+     *
+     * All such module-specific associations will be cancelled if a
+     * new search path is associated with the location by calling
+     * {@linkplain #setLocation setLocation } or
+     * {@linkplain #setLocationFromPaths setLocationFromPaths}.
+     *
+     * @throws IllegalStateException if the location is not a module-oriented
+     *  or output location.
+     * @throws UnsupportedOperationException if this operation is not supported by
+     *  this file manager.
+     * @throws IOException if {@code location} is an output location and
+     * {@code paths} does not represent an existing directory
+     *
+     * @param location the location
+     * @param moduleName the name of the module
+     * @param paths the search path to associate with the location and module.
+     *
+     * @see setLocation
+     * @see setLocationFromPaths
+     */
+    default void setLocationForModule(Location location, String moduleName,
+            Collection<? extends Path> paths) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
      * Returns the search path associated with the given location.
      *
      * @param location a location
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -41,8 +41,10 @@
 dc.exception.not.thrown = \u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {0}
 dc.invalid.anchor = \u30A2\u30F3\u30AB\u30FC\u306E\u540D\u524D\u304C\u7121\u52B9\u3067\u3059: "{0}"
 dc.invalid.param = \u7121\u52B9\u306A@param\u306E\u4F7F\u7528
+dc.invalid.provides = \u7121\u52B9\u306A@provides\u306E\u4F7F\u7528
 dc.invalid.return = \u7121\u52B9\u306A@return\u306E\u4F7F\u7528
 dc.invalid.throws = \u7121\u52B9\u306A@throws\u306E\u4F7F\u7528
+dc.invalid.uses = \u7121\u52B9\u306A@uses\u306E\u4F7F\u7528
 dc.invalid.uri = \u7121\u52B9\u306AURI: "{0}"
 dc.missing.comment = \u30B3\u30E1\u30F3\u30C8\u306A\u3057
 dc.missing.param = {0}\u306E@param\u304C\u3042\u308A\u307E\u305B\u3093
@@ -52,6 +54,7 @@
 dc.no.summary.or.caption.for.table=\u8868\u306E\u8981\u7D04\u307E\u305F\u306F\u30AD\u30E3\u30D7\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u305B\u3093
 dc.param.name.not.found = @param name\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
 dc.ref.not.found = \u53C2\u7167\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+dc.service.not.found = \u30B5\u30FC\u30D3\u30B9\u30FB\u30BF\u30A4\u30D7\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
 dc.tag.code.within.code = <code>\u5185\u306E'{@code'}
 dc.tag.empty = \u7A7A\u306E<{0}>\u30BF\u30B0
 dc.tag.end.not.permitted = \u7121\u52B9\u306A\u7D42\u4E86\u30BF\u30B0: </{0}>
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -41,8 +41,10 @@
 dc.exception.not.thrown = \u672A\u629B\u51FA\u5F02\u5E38\u9519\u8BEF: {0}
 dc.invalid.anchor = \u951A\u5B9A\u70B9\u7684\u540D\u79F0\u65E0\u6548: "{0}"
 dc.invalid.param = @param \u7684\u7528\u6CD5\u65E0\u6548
+dc.invalid.provides = @provides \u7684\u7528\u6CD5\u65E0\u6548
 dc.invalid.return = @return \u7684\u7528\u6CD5\u65E0\u6548
 dc.invalid.throws = @throws \u7684\u7528\u6CD5\u65E0\u6548
+dc.invalid.uses = @uses \u7684\u7528\u6CD5\u65E0\u6548
 dc.invalid.uri = URI \u65E0\u6548: "{0}"
 dc.missing.comment = \u6CA1\u6709\u6CE8\u91CA
 dc.missing.param = {0}\u6CA1\u6709 @param
@@ -52,6 +54,7 @@
 dc.no.summary.or.caption.for.table=\u8868\u6CA1\u6709\u6982\u8981\u6216\u6807\u9898
 dc.param.name.not.found = @param name \u672A\u627E\u5230
 dc.ref.not.found = \u627E\u4E0D\u5230\u5F15\u7528
+dc.service.not.found = \u627E\u4E0D\u5230\u670D\u52A1\u7C7B\u578B
 dc.tag.code.within.code = '{@code'} \u5728 <code> \u4E2D
 dc.tag.empty = <{0}> \u6807\u8BB0\u4E3A\u7A7A
 dc.tag.end.not.permitted = \u65E0\u6548\u7684\u7ED3\u675F\u6807\u8BB0: </{0}>
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1005,6 +1005,14 @@
     }
 
     @Override @DefinedBy(Api.COMPILER)
+    public void setLocationForModule(Location location, String moduleName, Collection<? extends Path> paths)
+            throws IOException {
+        nullCheck(location);
+        checkModuleOrientedOrOutputLocation(location);
+        locations.setLocationForModule(location, nullCheck(moduleName), nullCheck(paths));
+    }
+
+    @Override @DefinedBy(Api.COMPILER)
     public String inferModuleName(Location location) {
         checkNotModuleOrientedLocation(location);
         return locations.inferModuleName(location);
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java	Fri Mar 03 09:05:36 2017 +0000
@@ -398,7 +398,7 @@
      * @see #initHandlers
      * @see #getHandler
      */
-    protected abstract class LocationHandler {
+    protected static abstract class LocationHandler {
 
         /**
          * @see JavaFileManager#handleOption
@@ -420,7 +420,13 @@
         /**
          * @see StandardJavaFileManager#setLocation
          */
-        abstract void setPaths(Iterable<? extends Path> files) throws IOException;
+        abstract void setPaths(Iterable<? extends Path> paths) throws IOException;
+
+        /**
+         * @see StandardJavaFileManager#setLocationForModule
+         */
+        abstract void setPathsForModule(String moduleName, Iterable<? extends Path> paths)
+                throws IOException;
 
         /**
          * @see JavaFileManager#getLocationForModule(Location, String)
@@ -454,7 +460,7 @@
     /**
      * A LocationHandler for a given Location, and associated set of options.
      */
-    private abstract class BasicLocationHandler extends LocationHandler {
+    private static abstract class BasicLocationHandler extends LocationHandler {
 
         final Location location;
         final Set<Option> options;
@@ -473,6 +479,36 @@
                     ? EnumSet.noneOf(Option.class)
                     : EnumSet.copyOf(Arrays.asList(options));
         }
+
+        @Override
+        void setPathsForModule(String moduleName, Iterable<? extends Path> files) throws IOException {
+            // should not happen: protected by check in JavacFileManager
+            throw new UnsupportedOperationException("not supported for " + location);
+        }
+
+        protected Path checkSingletonDirectory(Iterable<? extends Path> paths) throws IOException {
+            Iterator<? extends Path> pathIter = paths.iterator();
+            if (!pathIter.hasNext()) {
+                throw new IllegalArgumentException("empty path for directory");
+            }
+            Path path = pathIter.next();
+            if (pathIter.hasNext()) {
+                throw new IllegalArgumentException("path too long for directory");
+            }
+            checkDirectory(path);
+            return path;
+        }
+
+        protected Path checkDirectory(Path path) throws IOException {
+            Objects.requireNonNull(path);
+            if (!Files.exists(path)) {
+                throw new FileNotFoundException(path + ": does not exist");
+            }
+            if (!Files.isDirectory(path)) {
+                throw new IOException(path + ": not a directory");
+            }
+            return path;
+        }
     }
 
     /**
@@ -483,8 +519,7 @@
     private class OutputLocationHandler extends BasicLocationHandler {
 
         private Path outputDir;
-        private Map<String, Location> moduleLocations;
-        private Map<Path, Location> pathLocations;
+        private ModuleTable moduleTable;
 
         OutputLocationHandler(Location location, Option... options) {
             super(location, options);
@@ -510,51 +545,51 @@
         }
 
         @Override
-        void setPaths(Iterable<? extends Path> files) throws IOException {
-            if (files == null) {
+        void setPaths(Iterable<? extends Path> paths) throws IOException {
+            if (paths == null) {
                 outputDir = null;
             } else {
-                Iterator<? extends Path> pathIter = files.iterator();
-                if (!pathIter.hasNext()) {
-                    throw new IllegalArgumentException("empty path for directory");
-                }
-                Path dir = pathIter.next();
-                if (pathIter.hasNext()) {
-                    throw new IllegalArgumentException("path too long for directory");
-                }
-                if (!Files.exists(dir)) {
-                    throw new FileNotFoundException(dir + ": does not exist");
-                } else if (!Files.isDirectory(dir)) {
-                    throw new IOException(dir + ": not a directory");
-                }
-                outputDir = dir;
+                outputDir = checkSingletonDirectory(paths);
             }
-            moduleLocations = null;
-            pathLocations = null;
+            moduleTable = null;
+            listed = false;
         }
 
         @Override
         Location getLocationForModule(String name) {
-            if (moduleLocations == null) {
-                moduleLocations = new HashMap<>();
-                pathLocations = new HashMap<>();
+            if (moduleTable == null) {
+                moduleTable = new ModuleTable();
             }
-            Location l = moduleLocations.get(name);
+            ModuleLocationHandler l = moduleTable.get(name);
             if (l == null) {
                 Path out = outputDir.resolve(name);
-                l = new ModuleLocationHandler(location.getName() + "[" + name + "]",
-                        name,
-                        Collections.singleton(out),
-                        true);
-                moduleLocations.put(name, l);
-                pathLocations.put(out.toAbsolutePath(), l);
-           }
+                l = new ModuleLocationHandler(this, location.getName() + "[" + name + "]",
+                        name, Collections.singletonList(out), true);
+                moduleTable.add(l);
+            }
             return l;
         }
 
         @Override
+        void setPathsForModule(String name, Iterable<? extends Path> paths) throws IOException {
+            Path out = checkSingletonDirectory(paths);
+            if (moduleTable == null) {
+                moduleTable = new ModuleTable();
+            }
+            ModuleLocationHandler l = moduleTable.get(name);
+            if (l == null) {
+                l = new ModuleLocationHandler(this, location.getName() + "[" + name + "]",
+                        name, Collections.singletonList(out), true);
+                moduleTable.add(l);
+           } else {
+                l.searchPath = Collections.singletonList(out);
+                moduleTable.updatePaths(l);
+            }
+        }
+
+        @Override
         Location getLocationForModule(Path dir) {
-            return (pathLocations == null) ? null : pathLocations.get(dir);
+            return (moduleTable == null) ? null : moduleTable.get(dir);
         }
 
         private boolean listed;
@@ -569,11 +604,11 @@
                 }
                 listed = true;
             }
-            if (moduleLocations == null)
+
+            if (moduleTable == null || moduleTable.isEmpty())
                 return Collections.emptySet();
-            Set<Location> locns = new LinkedHashSet<>();
-            moduleLocations.forEach((k, v) -> locns.add(v));
-            return Collections.singleton(locns);
+
+            return Collections.singleton(moduleTable.locations());
         }
     }
 
@@ -860,14 +895,16 @@
      * The Location can be specified to accept overriding classes from the
      * {@code --patch-module <module>=<path> } parameter.
      */
-    private class ModuleLocationHandler extends LocationHandler implements Location {
-        protected final String name;
-        protected final String moduleName;
-        protected final Collection<Path> searchPath;
-        protected final boolean output;
+    private static class ModuleLocationHandler extends LocationHandler implements Location {
+        private final LocationHandler parent;
+        private final String name;
+        private final String moduleName;
+        private final boolean output;
+        Collection<Path> searchPath;
 
-        ModuleLocationHandler(String name, String moduleName, Collection<Path> searchPath,
-                boolean output) {
+        ModuleLocationHandler(LocationHandler parent, String name, String moduleName,
+                Collection<Path> searchPath, boolean output) {
+            this.parent = parent;
             this.name = name;
             this.moduleName = moduleName;
             this.searchPath = searchPath;
@@ -891,21 +928,79 @@
 
         @Override // defined by LocationHandler
         Collection<Path> getPaths() {
-            // For now, we always return searchPathWithOverrides. This may differ from the
-            // JVM behavior if there is a module-info.class to be found in the overriding
-            // classes.
-            return searchPath;
+            return Collections.unmodifiableCollection(searchPath);
         }
 
         @Override // defined by LocationHandler
-        void setPaths(Iterable<? extends Path> files) throws IOException {
-            throw new UnsupportedOperationException();
+        void setPaths(Iterable<? extends Path> paths) throws IOException {
+            // defer to the parent to determine if this is acceptable
+            parent.setPathsForModule(moduleName, paths);
+        }
+
+        @Override // defined by LocationHandler
+        void setPathsForModule(String moduleName, Iterable<? extends Path> paths) {
+            throw new UnsupportedOperationException("not supported for " + name);
         }
 
         @Override // defined by LocationHandler
         String inferModuleName() {
             return moduleName;
         }
+
+        @Override
+        public String toString() {
+            return name;
+        }
+    }
+
+    /**
+     * A table of module location handlers, indexed by name and path.
+     */
+    private static class ModuleTable {
+        private final Map<String, ModuleLocationHandler> nameMap = new LinkedHashMap<>();
+        private final Map<Path, ModuleLocationHandler> pathMap = new LinkedHashMap<>();
+
+        void add(ModuleLocationHandler h) {
+            nameMap.put(h.moduleName, h);
+            for (Path p : h.searchPath) {
+                pathMap.put(normalize(p), h);
+            }
+        }
+
+        void updatePaths(ModuleLocationHandler h) {
+            // use iterator, to be able to remove old entries
+            for (Iterator<Map.Entry<Path, ModuleLocationHandler>> iter = pathMap.entrySet().iterator();
+                    iter.hasNext(); ) {
+                Map.Entry<Path, ModuleLocationHandler> e = iter.next();
+                if (e.getValue() == h) {
+                    iter.remove();
+                }
+            }
+            for (Path p : h.searchPath) {
+                pathMap.put(normalize(p), h);
+            }
+        }
+
+        ModuleLocationHandler get(String name) {
+            return nameMap.get(name);
+        }
+
+        ModuleLocationHandler get(Path path) {
+            return pathMap.get(path);
+        }
+
+        void clear() {
+            nameMap.clear();
+            pathMap.clear();
+        }
+
+        boolean isEmpty() {
+            return nameMap.isEmpty();
+        }
+
+        Set<Location> locations() {
+            return Collections.unmodifiableSet(nameMap.values().stream().collect(Collectors.toSet()));
+        }
     }
 
     /**
@@ -913,7 +1008,7 @@
      * like UPGRADE_MODULE_PATH and MODULE_PATH.
      */
     private class ModulePathLocationHandler extends SimpleLocationHandler {
-        private Map<String, ModuleLocationHandler> pathModules;
+        private ModuleTable moduleTable;
 
         ModulePathLocationHandler(Location location, Option... options) {
             super(location, options);
@@ -930,8 +1025,8 @@
 
         @Override
         public Location getLocationForModule(String moduleName) {
-            initPathModules();
-            return pathModules.get(moduleName);
+            initModuleLocations();
+            return moduleTable.get(moduleName);
         }
 
         @Override
@@ -950,20 +1045,49 @@
                 }
             }
             super.setPaths(paths);
+            moduleTable = null;
         }
 
-        private void initPathModules() {
-            if (pathModules != null) {
+        @Override
+        void setPathsForModule(String name, Iterable<? extends Path> paths) throws IOException {
+            List<Path> checkedPaths = checkPaths(paths);
+            // how far should we go to validate the paths provide a module?
+            // e.g. contain module-info with the correct name?
+            initModuleLocations();
+            ModuleLocationHandler l = moduleTable.get(name);
+            if (l == null) {
+                l = new ModuleLocationHandler(this, location.getName() + "[" + name + "]",
+                        name, checkedPaths, true);
+                moduleTable.add(l);
+           } else {
+                l.searchPath = checkedPaths;
+                moduleTable.updatePaths(l);
+            }
+        }
+
+        private List<Path> checkPaths(Iterable<? extends Path> paths) throws IOException {
+            Objects.requireNonNull(paths);
+            List<Path> validPaths = new ArrayList<>();
+            for (Path p : paths) {
+                validPaths.add(checkDirectory(p));
+            }
+            return validPaths;
+        }
+
+        private void initModuleLocations() {
+            if (moduleTable != null) {
                 return;
             }
 
-            pathModules = new LinkedHashMap<>();
+            moduleTable = new ModuleTable();
 
             for (Set<Location> set : listLocationsForModules()) {
                 for (Location locn : set) {
                     if (locn instanceof ModuleLocationHandler) {
-                        ModuleLocationHandler h = (ModuleLocationHandler) locn;
-                        pathModules.put(h.moduleName, h);
+                        ModuleLocationHandler l = (ModuleLocationHandler) locn;
+                        if (!moduleTable.nameMap.containsKey(l.moduleName)) {
+                            moduleTable.add(l);
+                        }
                     }
                 }
             }
@@ -1052,8 +1176,9 @@
                         String moduleName = readModuleName(moduleInfoClass);
                         String name = location.getName()
                                 + "[" + pathIndex + ":" + moduleName + "]";
-                        ModuleLocationHandler l = new ModuleLocationHandler(name, moduleName,
-                                Collections.singleton(path), false);
+                        ModuleLocationHandler l = new ModuleLocationHandler(
+                                ModulePathLocationHandler.this, name, moduleName,
+                                Collections.singletonList(path), false);
                         return Collections.singleton(l);
                     } catch (ModuleNameReader.BadClassFile e) {
                         log.error(Errors.LocnBadModuleInfo(path));
@@ -1077,8 +1202,9 @@
                     Path modulePath = module.snd;
                     String name = location.getName()
                             + "[" + pathIndex + "." + (index++) + ":" + moduleName + "]";
-                    ModuleLocationHandler l = new ModuleLocationHandler(name, moduleName,
-                            Collections.singleton(modulePath), false);
+                    ModuleLocationHandler l = new ModuleLocationHandler(
+                            ModulePathLocationHandler.this, name, moduleName,
+                            Collections.singletonList(modulePath), false);
                     result.add(l);
                 }
                 return result;
@@ -1094,8 +1220,9 @@
                 Path modulePath = module.snd;
                 String name = location.getName()
                         + "[" + pathIndex + ":" + moduleName + "]";
-                ModuleLocationHandler l = new ModuleLocationHandler(name, moduleName,
-                        Collections.singleton(modulePath), false);
+                ModuleLocationHandler l = new ModuleLocationHandler(
+                        ModulePathLocationHandler.this, name, moduleName,
+                        Collections.singletonList(modulePath), false);
                 return Collections.singleton(l);
             }
 
@@ -1212,9 +1339,7 @@
     }
 
     private class ModuleSourcePathLocationHandler extends BasicLocationHandler {
-
-        private Map<String, Location> moduleLocations;
-        private Map<Path, Location> pathLocations;
+        private ModuleTable moduleTable;
 
         ModuleSourcePathLocationHandler() {
             super(StandardLocation.MODULE_SOURCE_PATH,
@@ -1233,7 +1358,7 @@
                 expandBraces(s, segments);
             }
 
-            Map<String, Collection<Path>> map = new LinkedHashMap<>();
+            Map<String, List<Path>> map = new LinkedHashMap<>();
             final String MARKER = "*";
             for (String seg: segments) {
                 int markStart = seg.indexOf(MARKER);
@@ -1258,13 +1383,12 @@
                 }
             }
 
-            moduleLocations = new LinkedHashMap<>();
-            pathLocations = new LinkedHashMap<>();
-            map.forEach((k, v) -> {
-                String name = location.getName() + "[" + k + "]";
-                ModuleLocationHandler h = new ModuleLocationHandler(name, k, v, false);
-                moduleLocations.put(k, h);
-                v.forEach(p -> pathLocations.put(normalize(p), h));
+            moduleTable = new ModuleTable();
+            map.forEach((modName, modPath) -> {
+                String locnName = location.getName() + "[" + modName + "]";
+                ModuleLocationHandler l = new ModuleLocationHandler(this, locnName, modName,
+                        modPath, false);
+                moduleTable.add(l);
             });
         }
 
@@ -1273,7 +1397,7 @@
             return (ch == File.separatorChar) || (ch == '/');
         }
 
-        void add(Map<String, Collection<Path>> map, Path prefix, Path suffix) {
+        void add(Map<String, List<Path>> map, Path prefix, Path suffix) {
             if (!Files.isDirectory(prefix)) {
                 if (warn) {
                     String key = Files.exists(prefix)
@@ -1288,7 +1412,7 @@
                     Path path = (suffix == null) ? entry : entry.resolve(suffix);
                     if (Files.isDirectory(path)) {
                         String name = entry.getFileName().toString();
-                        Collection<Path> paths = map.get(name);
+                        List<Path> paths = map.get(name);
                         if (paths == null)
                             map.put(name, paths = new ArrayList<>());
                         paths.add(path);
@@ -1364,7 +1488,7 @@
 
         @Override
         boolean isSet() {
-            return (moduleLocations != null);
+            return (moduleTable != null);
         }
 
         @Override
@@ -1378,22 +1502,51 @@
         }
 
         @Override
+        void setPathsForModule(String name, Iterable<? extends Path> paths) throws IOException {
+            List<Path> validPaths = checkPaths(paths);
+
+            if (moduleTable == null)
+                moduleTable = new ModuleTable();
+
+            ModuleLocationHandler l = moduleTable.get(name);
+            if (l == null) {
+                l = new ModuleLocationHandler(this,
+                        location.getName() + "[" + name + "]",
+                        name,
+                        validPaths,
+                        true);
+                moduleTable.add(l);
+           } else {
+                l.searchPath = validPaths;
+                moduleTable.updatePaths(l);
+            }
+        }
+
+        private List<Path> checkPaths(Iterable<? extends Path> paths) throws IOException {
+            Objects.requireNonNull(paths);
+            List<Path> validPaths = new ArrayList<>();
+            for (Path p : paths) {
+                validPaths.add(checkDirectory(p));
+            }
+            return validPaths;
+        }
+
+        @Override
         Location getLocationForModule(String name) {
-            return (moduleLocations == null) ? null : moduleLocations.get(name);
+            return (moduleTable == null) ? null : moduleTable.get(name);
         }
 
         @Override
         Location getLocationForModule(Path dir) {
-            return (pathLocations == null) ? null : pathLocations.get(dir);
+            return (moduleTable == null) ? null : moduleTable.get(dir);
         }
 
         @Override
         Iterable<Set<Location>> listLocationsForModules() {
-            if (moduleLocations == null)
+            if (moduleTable == null)
                 return Collections.emptySet();
-            Set<Location> locns = new LinkedHashSet<>();
-            moduleLocations.forEach((k, v) -> locns.add(v));
-            return Collections.singleton(locns);
+
+            return Collections.singleton(moduleTable.locations());
         }
 
     }
@@ -1401,8 +1554,7 @@
     private class SystemModulesLocationHandler extends BasicLocationHandler {
         private Path systemJavaHome;
         private Path modules;
-        private Map<String, ModuleLocationHandler> systemModules;
-        private Map<Path, Location> pathLocations;
+        private ModuleTable moduleTable;
 
         SystemModulesLocationHandler() {
             super(StandardLocation.SYSTEM_MODULES, Option.SYSTEM);
@@ -1437,23 +1589,38 @@
             if (files == null) {
                 systemJavaHome = null;
             } else {
-                Iterator<? extends Path> pathIter = files.iterator();
-                if (!pathIter.hasNext()) {
-                    throw new IllegalArgumentException("empty path for directory"); // TODO: FIXME
-                }
-                Path dir = pathIter.next();
-                if (pathIter.hasNext()) {
-                    throw new IllegalArgumentException("path too long for directory"); // TODO: FIXME
-                }
-                if (!Files.exists(dir)) {
-                    throw new FileNotFoundException(dir + ": does not exist");
-                } else if (!Files.isDirectory(dir)) {
-                    throw new IOException(dir + ": not a directory");
-                }
+                Path dir = checkSingletonDirectory(files);
                 update(dir);
             }
         }
 
+        @Override
+        void setPathsForModule(String name, Iterable<? extends Path> paths) throws IOException {
+            List<Path> checkedPaths = checkPaths(paths);
+            initSystemModules();
+            ModuleLocationHandler l = moduleTable.get(name);
+            if (l == null) {
+                l = new ModuleLocationHandler(this,
+                        location.getName() + "[" + name + "]",
+                        name,
+                        checkedPaths,
+                        true);
+                moduleTable.add(l);
+           } else {
+                l.searchPath = checkedPaths;
+                moduleTable.updatePaths(l);
+            }
+        }
+
+        private List<Path> checkPaths(Iterable<? extends Path> paths) throws IOException {
+            Objects.requireNonNull(paths);
+            List<Path> validPaths = new ArrayList<>();
+            for (Path p : paths) {
+                validPaths.add(checkDirectory(p));
+            }
+            return validPaths;
+        }
+
         private void update(Path p) {
             if (!isCurrentPlatform(p) && !Files.exists(p.resolve("lib").resolve("jrt-fs.jar")) &&
                     !Files.exists(systemJavaHome.resolve("modules")))
@@ -1473,31 +1640,27 @@
         @Override
         Location getLocationForModule(String name) throws IOException {
             initSystemModules();
-            return systemModules.get(name);
+            return moduleTable.get(name);
         }
 
         @Override
         Location getLocationForModule(Path dir) throws IOException {
             initSystemModules();
-            return (pathLocations == null) ? null : pathLocations.get(dir);
+            return moduleTable.get(dir);
         }
 
         @Override
         Iterable<Set<Location>> listLocationsForModules() throws IOException {
             initSystemModules();
-            Set<Location> locns = new LinkedHashSet<>();
-            for (Location l: systemModules.values())
-                locns.add(l);
-            return Collections.singleton(locns);
+            return Collections.singleton(moduleTable.locations());
         }
 
         private void initSystemModules() throws IOException {
-            if (systemModules != null) {
+            if (moduleTable != null)
                 return;
-            }
 
             if (systemJavaHome == null) {
-                systemModules = Collections.emptyMap();
+                moduleTable = new ModuleTable();
                 return;
             }
 
@@ -1535,24 +1698,21 @@
                 }
             }
 
-            systemModules = new LinkedHashMap<>();
-            pathLocations = new LinkedHashMap<>();
+            moduleTable = new ModuleTable();
             try (DirectoryStream<Path> stream = Files.newDirectoryStream(modules, Files::isDirectory)) {
                 for (Path entry : stream) {
                     String moduleName = entry.getFileName().toString();
                     String name = location.getName() + "[" + moduleName + "]";
-                    ModuleLocationHandler h = new ModuleLocationHandler(name, moduleName,
-                            Collections.singleton(entry), false);
-                    systemModules.put(moduleName, h);
-                    pathLocations.put(normalize(entry), h);
+                    ModuleLocationHandler h = new ModuleLocationHandler(this,
+                            name, moduleName, Collections.singletonList(entry), false);
+                    moduleTable.add(h);
                 }
             }
         }
     }
 
     private class PatchModulesLocationHandler extends BasicLocationHandler {
-        private final Map<String, ModuleLocationHandler> moduleLocations = new HashMap<>();
-        private final Map<Path, Location> pathLocations = new HashMap<>();
+        private final ModuleTable moduleTable = new ModuleTable();
 
         PatchModulesLocationHandler() {
             super(StandardLocation.PATCH_MODULE_PATH, Option.PATCH_MODULE);
@@ -1576,11 +1736,9 @@
                     SearchPath mPatchPath = new SearchPath()
                             .addFiles(v.substring(eq + 1));
                     String name = location.getName() + "[" + moduleName + "]";
-                    ModuleLocationHandler h = new ModuleLocationHandler(name, moduleName, mPatchPath, false);
-                    moduleLocations.put(moduleName, h);
-                    for (Path r : mPatchPath) {
-                        pathLocations.put(normalize(r), h);
-                    }
+                    ModuleLocationHandler h = new ModuleLocationHandler(this, name,
+                            moduleName, mPatchPath, false);
+                    moduleTable.add(h);
                 } else {
                     // Should not be able to get here;
                     // this should be caught and handled in Option.PATCH_MODULE
@@ -1593,7 +1751,7 @@
 
         @Override
         boolean isSet() {
-            return !moduleLocations.isEmpty();
+            return !moduleTable.isEmpty();
         }
 
         @Override
@@ -1606,24 +1764,25 @@
             throw new UnsupportedOperationException();
         }
 
+        @Override // defined by LocationHandler
+        void setPathsForModule(String moduleName, Iterable<? extends Path> files) throws IOException {
+            throw new UnsupportedOperationException(); // not yet
+        }
+
         @Override
         Location getLocationForModule(String name) throws IOException {
-            return moduleLocations.get(name);
+            return moduleTable.get(name);
         }
 
         @Override
         Location getLocationForModule(Path dir) throws IOException {
-            return (pathLocations == null) ? null : pathLocations.get(dir);
+            return moduleTable.get(dir);
         }
 
         @Override
         Iterable<Set<Location>> listLocationsForModules() throws IOException {
-            Set<Location> locns = new LinkedHashSet<>();
-            for (Location l: moduleLocations.values())
-                locns.add(l);
-            return Collections.singleton(locns);
+            return Collections.singleton(moduleTable.locations());
         }
-
     }
 
     Map<Location, LocationHandler> handlersForLocation;
@@ -1644,7 +1803,6 @@
             new OutputLocationHandler(StandardLocation.NATIVE_HEADER_OUTPUT, Option.H),
             new ModuleSourcePathLocationHandler(),
             new PatchModulesLocationHandler(),
-            // TODO: should UPGRADE_MODULE_PATH be merged with SYSTEM_MODULES?
             new ModulePathLocationHandler(StandardLocation.UPGRADE_MODULE_PATH, Option.UPGRADE_MODULE_PATH),
             new ModulePathLocationHandler(StandardLocation.MODULE_PATH, Option.MODULE_PATH),
             new SystemModulesLocationHandler(),
@@ -1704,6 +1862,20 @@
         return (h == null ? null : h.getLocationForModule(dir));
     }
 
+    void setLocationForModule(Location location, String moduleName,
+            Iterable<? extends Path> files) throws IOException {
+        LocationHandler h = getHandler(location);
+        if (h == null) {
+            if (location.isOutputLocation()) {
+                h = new OutputLocationHandler(location);
+            } else {
+                h = new ModulePathLocationHandler(location);
+            }
+            handlersForLocation.put(location, h);
+        }
+        h.setPathsForModule(moduleName, files);
+    }
+
     String inferModuleName(Location location) {
         LocationHandler h = getHandler(location);
         return (h == null ? null : h.inferModuleName());
@@ -1737,5 +1909,4 @@
             return p.toAbsolutePath().normalize();
         }
     }
-
 }
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacTypes.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacTypes.java	Fri Mar 03 09:05:36 2017 +0000
@@ -93,22 +93,22 @@
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public boolean isSubtype(TypeMirror t1, TypeMirror t2) {
-        validateTypeNotIn(t1, EXEC_OR_PKG);
-        validateTypeNotIn(t2, EXEC_OR_PKG);
+        validateTypeNotIn(t1, EXEC_OR_PKG_OR_MOD);
+        validateTypeNotIn(t2, EXEC_OR_PKG_OR_MOD);
         return types.isSubtype((Type) t1, (Type) t2);
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public boolean isAssignable(TypeMirror t1, TypeMirror t2) {
-        validateTypeNotIn(t1, EXEC_OR_PKG);
-        validateTypeNotIn(t2, EXEC_OR_PKG);
+        validateTypeNotIn(t1, EXEC_OR_PKG_OR_MOD);
+        validateTypeNotIn(t2, EXEC_OR_PKG_OR_MOD);
         return types.isAssignable((Type) t1, (Type) t2);
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public boolean contains(TypeMirror t1, TypeMirror t2) {
-        validateTypeNotIn(t1, EXEC_OR_PKG);
-        validateTypeNotIn(t2, EXEC_OR_PKG);
+        validateTypeNotIn(t1, EXEC_OR_PKG_OR_MOD);
+        validateTypeNotIn(t2, EXEC_OR_PKG_OR_MOD);
         return types.containsType((Type) t1, (Type) t2);
     }
 
@@ -119,7 +119,7 @@
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public List<Type> directSupertypes(TypeMirror t) {
-        validateTypeNotIn(t, EXEC_OR_PKG);
+        validateTypeNotIn(t, EXEC_OR_PKG_OR_MOD);
         Type ty = (Type)t;
         return types.directSupertypes(ty).stream()
                 .map(Type::stripMetadataIfNeeded)
@@ -128,7 +128,8 @@
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public TypeMirror erasure(TypeMirror t) {
-        if (t.getKind() == TypeKind.PACKAGE)
+        TypeKind kind = t.getKind();
+        if (kind == TypeKind.PACKAGE || kind == TypeKind.MODULE)
             throw new IllegalArgumentException(t.toString());
         return types.erasure((Type)t).stripMetadataIfNeeded();
     }
@@ -150,7 +151,7 @@
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public TypeMirror capture(TypeMirror t) {
-        validateTypeNotIn(t, EXEC_OR_PKG);
+        validateTypeNotIn(t, EXEC_OR_PKG_OR_MOD);
         return types.capture((Type)t).stripMetadataIfNeeded();
     }
 
@@ -192,6 +193,7 @@
         case EXECUTABLE:
         case WILDCARD:  // heh!
         case PACKAGE:
+        case MODULE:
             throw new IllegalArgumentException(componentType.toString());
         }
         return new Type.ArrayType((Type) componentType, syms.arrayClass);
@@ -299,8 +301,8 @@
     }
 
 
-    private static final Set<TypeKind> EXEC_OR_PKG =
-            EnumSet.of(TypeKind.EXECUTABLE, TypeKind.PACKAGE);
+    private static final Set<TypeKind> EXEC_OR_PKG_OR_MOD =
+        EnumSet.of(TypeKind.EXECUTABLE, TypeKind.PACKAGE, TypeKind.MODULE);
 
     /**
      * Throws an IllegalArgumentException if a type's kind is one of a set.
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -593,14 +593,66 @@
 
 compiler.err.not.annotation.type={0}\u306F\u6CE8\u91C8\u578B\u3067\u306F\u3042\u308A\u307E\u305B\u3093
 
+# 0: symbol, 1: symbol, 2: message segment
+compiler.err.not.def.access.package.cant.access={0} \u306F\u8868\u793A\u4E0D\u53EF\u3067\u3059\n({2})
+
+# 0: symbol, 1: symbol, 2: message segment
+compiler.misc.not.def.access.package.cant.access={0} \u306F\u8868\u793A\u4E0D\u53EF\u3067\u3059\n({2})
+
+# 0: symbol, 1: message segment
+compiler.err.package.not.visible=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u8868\u793A\u4E0D\u53EF\u3067\u3059\n({1})
+
+# 0: symbol, 1: message segment
+compiler.misc.package.not.visible=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u8868\u793A\u4E0D\u53EF\u3067\u3059\n({1})
+
+# {0} - current module
+# {1} - package in which the invisible class is declared
+# {2} - module in which {1} is declared
+# 0: symbol, 1: symbol, 2: symbol
+compiler.misc.not.def.access.does.not.read=\u30D1\u30C3\u30B1\u30FC\u30B8{1}\u306F\u30E2\u30B8\u30E5\u30FC\u30EB{2}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306B\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u307E\u305B\u3093
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
 # 0: symbol, 1: symbol
-compiler.err.not.def.access.package.cant.access=\u30D1\u30C3\u30B1\u30FC\u30B8{1}\u304C\u53EF\u8996\u3067\u306F\u306A\u3044\u305F\u3081\u3001{0}\u306F\u53EF\u8996\u3067\u306F\u3042\u308A\u307E\u305B\u3093
-
+compiler.misc.not.def.access.does.not.read.from.unnamed=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u30E2\u30B8\u30E5\u30FC\u30EB{1}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B0\u30E9\u30D5\u306B\u3042\u308A\u307E\u305B\u3093
+
+# {0} - package in which the invisible class is declared
+# {1} - current module
 # 0: symbol, 1: symbol
-compiler.err.not.def.access.class.intf.cant.access={1}\u306E{0}\u304C\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u3044\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
-
+compiler.misc.not.def.access.does.not.read.unnamed=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306B\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u307E\u305B\u3093
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
 # 0: symbol, 1: symbol
-compiler.misc.not.def.access.class.intf.cant.access={1}\u306E{0}\u304C\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u3044\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+compiler.misc.not.def.access.not.exported=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u30E2\u30B8\u30E5\u30FC\u30EB{1}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
+# 0: symbol, 1: symbol
+compiler.misc.not.def.access.not.exported.from.unnamed=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u30E2\u30B8\u30E5\u30FC\u30EB{1}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
+# {2} - current module
+# 0: symbol, 1: symbol, 2: symbol
+compiler.misc.not.def.access.not.exported.to.module=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u30E2\u30B8\u30E5\u30FC\u30EB{1}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u30E2\u30B8\u30E5\u30FC\u30EB{2}\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
+# 0: symbol, 1: symbol
+compiler.misc.not.def.access.not.exported.to.module.from.unnamed=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u30E2\u30B8\u30E5\u30FC\u30EB{1}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
+# 0: symbol, 1: symbol
+compiler.err.not.def.access.class.intf.cant.access={1}.{0}\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u3044\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: symbol, 1: symbol
+compiler.misc.not.def.access.class.intf.cant.access={1}.{0}\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u3044\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: symbol, 1: symbol, 2: symbol, 3: message segment
+compiler.err.not.def.access.class.intf.cant.access.reason=\u30D1\u30C3\u30B1\u30FC\u30B8{2}\u306E{1}.{0}\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n({3})
+
+# 0: symbol, 1: symbol, 2: symbol, 3: message segment
+compiler.misc.not.def.access.class.intf.cant.access.reason=\u30D1\u30C3\u30B1\u30FC\u30B8{2}\u306E{1}.{0}\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n({3})
 
 # 0: symbol, 1: list of type, 2: type
 compiler.misc.cant.access.inner.cls.constr=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}({1})\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080\u578B{2}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093
@@ -627,6 +679,8 @@
 
 compiler.err.pkg.annotations.sb.in.package-info.java=\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u6CE8\u91C8\u306F\u30D5\u30A1\u30A4\u30EBpackage-info.java\u5185\u306B\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
+compiler.err.no.pkg.in.module-info.java=package\u53E5\u304C\u30D5\u30A1\u30A4\u30EBmodule-info.java\u306B\u3042\u3063\u3066\u306F\u306A\u308A\u307E\u305B\u3093
+
 # 0: symbol
 compiler.err.pkg.clashes.with.class.of.same.name=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u540C\u540D\u306E\u30AF\u30E9\u30B9\u3068\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059
 
@@ -1048,6 +1102,9 @@
 
 compiler.warn.finally.cannot.complete=finally\u7BC0\u304C\u6B63\u5E38\u306B\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093
 
+# 0: name
+compiler.warn.poor.choice.for.module.name=\u30E2\u30B8\u30E5\u30FC\u30EB\u540D{0}\u306E\u672B\u5C3E\u306F\u6570\u5B57\u306B\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044
+
 # 0: symbol, 1: symbol
 compiler.warn.has.been.deprecated={1}\u306E{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093
 
@@ -1055,6 +1112,12 @@
 compiler.warn.has.been.deprecated.for.removal={1}\u306E{0}\u306F\u63A8\u5968\u3055\u308C\u3066\u304A\u3089\u305A\u3001\u524A\u9664\u7528\u306B\u30DE\u30FC\u30AF\u3055\u308C\u3066\u3044\u307E\u3059
 
 # 0: symbol
+compiler.warn.has.been.deprecated.module=\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093
+
+# 0: symbol
+compiler.warn.has.been.deprecated.for.removal.module=\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306F\u63A8\u5968\u3055\u308C\u3066\u304A\u3089\u305A\u3001\u524A\u9664\u7528\u306B\u30DE\u30FC\u30AF\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: symbol
 compiler.warn.sun.proprietary={0}\u306F\u5185\u90E8\u6240\u6709\u306EAPI\u3067\u3042\u308A\u3001\u4ECA\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
 
 compiler.warn.illegal.char.for.encoding=\u3053\u306E\u6587\u5B57\u306F\u3001\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0{0}\u306B\u30DE\u30C3\u30D7\u3067\u304D\u307E\u305B\u3093
@@ -1210,6 +1273,8 @@
 # 0: symbol kind
 compiler.warn.deprecated.annotation.has.no.effect=@Deprecated\u6CE8\u91C8\u306F\u3001\u3053\u306E{0}\u5BA3\u8A00\u306B\u306F\u5F71\u97FF\u3057\u307E\u305B\u3093
 
+compiler.warn.invalid.path=\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u7121\u52B9\u3067\u3059: {0}
+
 compiler.warn.invalid.archive.file=\u30D1\u30B9\u4E0A\u306E\u4E88\u671F\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB: {0}
 
 compiler.warn.unexpected.archive.file=\u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u4E88\u671F\u3057\u306A\u3044\u62E1\u5F35\u5B50: {0}
@@ -1293,6 +1358,8 @@
 compiler.err.premature.eof=\u69CB\u6587\u89E3\u6790\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u306B\u79FB\u308A\u307E\u3057\u305F
 
 ## The following are related in form, but do not easily fit the above paradigm.
+compiler.err.expected.module=''\u30E2\u30B8\u30E5\u30FC\u30EB''\u304C\u5FC5\u8981\u3067\u3059
+
 compiler.err.dot.class.expected=''.class''\u304C\u3042\u308A\u307E\u305B\u3093
 
 ## The argument to this string will always be either 'case' or 'default'.
@@ -1358,6 +1425,12 @@
 
 compiler.misc.class.file.not.found={0}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
 
+# 0: string (constant value), 1: symbol (constant field), 2: type (field type)
+compiler.misc.bad.constant.range={1}\u306E\u5B9A\u6570\u5024''{0}''\u306F{2}\u306E\u60F3\u5B9A\u7BC4\u56F2\u5916\u3067\u3059
+
+# 0: string (constant value), 1: symbol (constant field), 2: string (expected class)
+compiler.misc.bad.constant.value={1}\u306E\u5B9A\u6570\u5024''{0}''\u306F\u4E0D\u6B63\u3067\u3059\u3002{2}\u304C\u5FC5\u8981\u3067\u3059
+
 # 0: string (classfile major version), 1: string (classfile minor version)
 compiler.misc.invalid.default.interface=\u30D0\u30FC\u30B8\u30E7\u30F3{0}.{1}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306B\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
 
@@ -1518,6 +1591,9 @@
 
 compiler.misc.arg.length.mismatch=\u5B9F\u5F15\u6570\u30EA\u30B9\u30C8\u3068\u4EEE\u5F15\u6570\u30EA\u30B9\u30C8\u306E\u9577\u3055\u304C\u7570\u306A\u308A\u307E\u3059
 
+# 0: string
+compiler.misc.wrong.number.type.args=\u578B\u5F15\u6570\u306E\u6570\u304C\u4E0D\u6B63\u3067\u3059\u3002{0}\u500B\u5FC5\u8981\u3067\u3059
+
 # 0: message segment
 compiler.misc.no.conforming.assignment.exists=\u5F15\u6570\u306E\u4E0D\u4E00\u81F4: {0}
 
@@ -1785,7 +1861,7 @@
 compiler.err.default.methods.not.supported.in.source=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
 
 # 0: string
-compiler.err.intersection.types.in.cast.not.supported.in.source=\u30AD\u30E3\u30B9\u30C8\u5185\u306Eintersection\u578B\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
+compiler.err.intersection.types.in.cast.not.supported.in.source=\u30AD\u30E3\u30B9\u30C8\u5185\u306Eintersection\u578B\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30AD\u30E3\u30B9\u30C8\u5185\u306Eintersection\u578B\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
 
 # 0: string
 compiler.err.static.intf.methods.not.supported.in.source=static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
@@ -1932,6 +2008,9 @@
 # 0: symbol
 compiler.err.module.not.found=\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
 
+# 0: symbol
+compiler.warn.module.not.found=\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
+
 compiler.err.too.many.modules=\u691C\u51FA\u3055\u308C\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u304C\u591A\u3059\u304E\u307E\u3059
 
 # 0: symbol
@@ -1941,7 +2020,18 @@
 compiler.err.duplicate.requires=\u5FC5\u9808\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}
 
 # 0: symbol
-compiler.err.duplicate.exports=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}
+compiler.err.conflicting.exports=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059: {0}
+
+# 0: symbol
+compiler.err.conflicting.opens=\u30AA\u30FC\u30D7\u30F3\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059: {0}
+
+# 0: symbol
+compiler.err.conflicting.exports.to.module=\u30E2\u30B8\u30E5\u30FC\u30EB\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059: {0}
+
+# 0: symbol
+compiler.err.conflicting.opens.to.module=\u30E2\u30B8\u30E5\u30FC\u30EB\u3078\u306E\u30AA\u30FC\u30D7\u30F3\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059: {0}
+
+compiler.err.no.opens.unless.strong=''opens''\u306F\u5F37\u56FA\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u3067\u306E\u307F\u8A31\u53EF\u3055\u308C\u307E\u3059
 
 # 0: symbol, 1: symbol
 compiler.err.duplicate.provides=\u6307\u5B9A\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: \u30B5\u30FC\u30D3\u30B9{0}\u3001\u5B9F\u88C5{1}
@@ -1952,15 +2042,14 @@
 # 0: symbol
 compiler.err.service.implementation.is.abstract=\u30B5\u30FC\u30D3\u30B9\u5B9F\u88C5\u304C\u62BD\u8C61\u30AF\u30E9\u30B9\u3067\u3059: {0}
 
-compiler.err.service.implementation.must.be.subtype.of.service.interface=\u30B5\u30FC\u30D3\u30B9\u5B9F\u88C5\u30BF\u30A4\u30D7\u306F\u3001\u30B5\u30FC\u30D3\u30B9\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30BF\u30A4\u30D7\u306E\u30B5\u30D6\u30BF\u30A4\u30D7\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+compiler.err.service.implementation.must.be.subtype.of.service.interface=\u30B5\u30FC\u30D3\u30B9\u5B9F\u88C5\u30BF\u30A4\u30D7\u306F\u3001\u30B5\u30FC\u30D3\u30B9\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30BF\u30A4\u30D7\u306E\u30B5\u30D6\u30BF\u30A4\u30D7\u3067\u3042\u308B\u304B\u3001\u30B5\u30FC\u30D3\u30B9\u5B9F\u88C5\u3092\u623B\u3057\u3001\u5F15\u6570\u3092\u6301\u305F\u306A\u3044\u3001"provider"\u3068\u3044\u3046\u540D\u524D\u306Epublic static\u30E1\u30BD\u30C3\u30C9\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
+compiler.err.service.implementation.provider.return.must.be.subtype.of.service.interface="provider"\u30E1\u30BD\u30C3\u30C9\u306E\u623B\u308A\u30BF\u30A4\u30D7\u306F\u3001\u30B5\u30FC\u30D3\u30B9\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30BF\u30A4\u30D7\u306E\u30B5\u30D6\u30BF\u30A4\u30D7\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
 # 0: symbol
 compiler.err.service.implementation.is.inner=\u30B5\u30FC\u30D3\u30B9\u5B9F\u88C5\u304C\u5185\u90E8\u30AF\u30E9\u30B9\u3067\u3059: {0}
 
 # 0: symbol
-compiler.err.service.definition.is.inner=\u30B5\u30FC\u30D3\u30B9\u5B9A\u7FA9\u304C\u5185\u90E8\u30AF\u30E9\u30B9\u3067\u3059: {0}
-
-# 0: symbol
 compiler.err.service.definition.is.enum=\u30B5\u30FC\u30D3\u30B9\u5B9A\u7FA9\u304C\u5217\u6319\u578B\u3067\u3059: {0}
 
 # 0: symbol
@@ -1982,6 +2071,12 @@
 # 0: name, 1: name
 compiler.misc.module.name.mismatch=\u30E2\u30B8\u30E5\u30FC\u30EB\u540D{0}\u306F\u5FC5\u8981\u306A\u540D\u524D{1}\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093
 
+# 0: name
+compiler.err.module.non.zero.opens=\u30AA\u30FC\u30D7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306F\u30BC\u30ED\u3067\u306A\u3044opens_count\u3092\u6301\u3061\u307E\u3059
+
+# 0: name
+compiler.misc.module.non.zero.opens=\u30AA\u30FC\u30D7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306F\u30BC\u30ED\u3067\u306A\u3044opens_count\u3092\u6301\u3061\u307E\u3059
+
 compiler.err.module.decl.sb.in.module-info.java=\u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306Fmodule-info.java\u3068\u3044\u3046\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
 compiler.err.module-info.with.xmodule.sourcepath=\u30BD\u30FC\u30B9\u30D1\u30B9\u306E-Xmodule\u3068module-info\u306E\u7D44\u5408\u305B\u304C\u4E0D\u6B63\u3067\u3059
@@ -2014,20 +2109,19 @@
 # 0: fragment, 1: name
 compiler.err.duplicate.module.on.path={0}\u3067\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\n{1}\u306E\u30E2\u30B8\u30E5\u30FC\u30EB
 
-# 0:  string
-compiler.err.xaddexports.malformed.entry=--add-exports {0}\u306E\u5024\u304C\u4E0D\u6B63\u3067\u3059
-
-# 0: string
-compiler.err.xaddexports.too.many={0}\u306E--add-exports\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u3042\u308A\u307E\u3059
-
-# 0:  string
-compiler.err.xaddreads.malformed.entry=--add-reads {0}\u306E\u5024\u304C\u4E0D\u6B63\u3067\u3059
-
-# 0: string
-compiler.err.xaddreads.too.many={0}\u306E--add-reads\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u3042\u308A\u307E\u3059
+# 0: option name, 1: string
+compiler.warn.bad.name.for.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024\u306B\u542B\u307E\u308C\u308B\u540D\u524D\u304C\u4E0D\u6B63\u3067\u3059: ''{1}''
+
+# 0: option name, 1: string
+compiler.err.bad.name.for.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024\u306B\u542B\u307E\u308C\u308B\u540D\u524D\u304C\u4E0D\u6B63\u3067\u3059: ''{1}''
+
+# 0: option name, 1: symbol
+compiler.warn.module.for.option.not.found={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u5185\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u540D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {1}
 
 compiler.err.addmods.all.module.path.invalid=--add-modules ALL-MODULE-PATH\u306F\u3001\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u6642\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059
 
+compiler.warn.addopens.ignored=--add-opens\u306F\u3001\u30B3\u30F3\u30D1\u30A4\u30EB\u6642\u306B\u306F\u7121\u52B9\u3067\u3059
+
 compiler.misc.locn.module_source_path=\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30BD\u30FC\u30B9\u30FB\u30D1\u30B9
 
 compiler.misc.locn.upgrade_module_path=\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9
@@ -2038,9 +2132,6 @@
 
 compiler.misc.cant.resolve.modules=\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093
 
-# 0: symbol
-compiler.err.cant.find.module=\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
-
 # 0: string
 compiler.err.invalid.module.specifier=\u30E2\u30B8\u30E5\u30FC\u30EB\u6307\u5B9A\u5B50\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093: {0}
 
@@ -2052,7 +2143,7 @@
 # 0: kind name, 1: symbol, 2: symbol
 compiler.warn.leaks.not.accessible.unexported=\u30E2\u30B8\u30E5\u30FC\u30EB{2}\u306E{0} {1}\u306F\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093
 # 0: kind name, 1: symbol, 2: symbol
-compiler.warn.leaks.not.accessible.not.required.public=\u30E2\u30B8\u30E5\u30FC\u30EB{2}\u306E{0} {1}\u306F\u3001''requires public''\u3092\u4F7F\u7528\u3057\u3066\u9593\u63A5\u7684\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093
+compiler.warn.leaks.not.accessible.not.required.transitive=\u30E2\u30B8\u30E5\u30FC\u30EB{2}\u306E{0} {1}\u306F\u3001''requires transitive''\u3092\u4F7F\u7528\u3057\u3066\u9593\u63A5\u7684\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093
 # 0: kind name, 1: symbol, 2: symbol
 compiler.warn.leaks.not.accessible.unexported.qualified=\u30E2\u30B8\u30E5\u30FC\u30EB{2}\u306E{0} {1}\u306F\u3001\u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u5FC5\u8981\u3068\u3059\u308B\u3059\u3079\u3066\u306E\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306B\u8868\u793A\u3055\u308C\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
 
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -593,14 +593,66 @@
 
 compiler.err.not.annotation.type={0}\u4E0D\u662F\u6CE8\u91CA\u7C7B\u578B
 
+# 0: symbol, 1: symbol, 2: message segment
+compiler.err.not.def.access.package.cant.access={0} \u4E0D\u53EF\u89C1\n({2})
+
+# 0: symbol, 1: symbol, 2: message segment
+compiler.misc.not.def.access.package.cant.access={0} \u4E0D\u53EF\u89C1\n({2})
+
+# 0: symbol, 1: message segment
+compiler.err.package.not.visible=\u7A0B\u5E8F\u5305 {0} \u4E0D\u53EF\u89C1\n({1})
+
+# 0: symbol, 1: message segment
+compiler.misc.package.not.visible=\u7A0B\u5E8F\u5305 {0} \u4E0D\u53EF\u89C1\n({1})
+
+# {0} - current module
+# {1} - package in which the invisible class is declared
+# {2} - module in which {1} is declared
+# 0: symbol, 1: symbol, 2: symbol
+compiler.misc.not.def.access.does.not.read=\u7A0B\u5E8F\u5305 {1} \u5DF2\u5728\u6A21\u5757 {2} \u4E2D\u58F0\u660E, \u4F46\u6A21\u5757 {0} \u672A\u8BFB\u53D6\u5B83
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
 # 0: symbol, 1: symbol
-compiler.err.not.def.access.package.cant.access=\u7531\u4E8E\u7A0B\u5E8F\u5305 {1} \u4E0D\u53EF\u89C1, \u56E0\u6B64 {0} \u4E0D\u53EF\u89C1
-
+compiler.misc.not.def.access.does.not.read.from.unnamed=\u7A0B\u5E8F\u5305 {0} \u5DF2\u5728\u6A21\u5757 {1} \u4E2D\u58F0\u660E, \u4F46\u8BE5\u6A21\u5757\u4E0D\u5728\u6A21\u5757\u56FE\u4E2D
+
+# {0} - package in which the invisible class is declared
+# {1} - current module
 # 0: symbol, 1: symbol
-compiler.err.not.def.access.class.intf.cant.access={1}\u4E2D\u7684{0}\u662F\u5728\u4E0D\u53EF\u8BBF\u95EE\u7684\u7C7B\u6216\u63A5\u53E3\u4E2D\u5B9A\u4E49\u7684
-
+compiler.misc.not.def.access.does.not.read.unnamed=\u7A0B\u5E8F\u5305 {0} \u5DF2\u5728\u672A\u547D\u540D\u6A21\u5757\u4E2D\u58F0\u660E, \u4F46\u6A21\u5757 {0} \u672A\u8BFB\u53D6\u5B83
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
 # 0: symbol, 1: symbol
-compiler.misc.not.def.access.class.intf.cant.access={1}\u4E2D\u7684{0}\u662F\u5728\u4E0D\u53EF\u8BBF\u95EE\u7684\u7C7B\u6216\u63A5\u53E3\u4E2D\u5B9A\u4E49\u7684
+compiler.misc.not.def.access.not.exported=\u7A0B\u5E8F\u5305 {0} \u5DF2\u5728\u6A21\u5757 {1} \u4E2D\u58F0\u660E, \u4F46\u8BE5\u6A21\u5757\u672A\u5BFC\u51FA\u5B83
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
+# 0: symbol, 1: symbol
+compiler.misc.not.def.access.not.exported.from.unnamed=\u7A0B\u5E8F\u5305 {0} \u5DF2\u5728\u6A21\u5757 {1} \u4E2D\u58F0\u660E, \u4F46\u8BE5\u6A21\u5757\u672A\u5BFC\u51FA\u5B83
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
+# {2} - current module
+# 0: symbol, 1: symbol, 2: symbol
+compiler.misc.not.def.access.not.exported.to.module=\u7A0B\u5E8F\u5305 {0} \u5DF2\u5728\u6A21\u5757 {1} \u4E2D\u58F0\u660E, \u4F46\u8BE5\u6A21\u5757\u672A\u5C06\u5B83\u5BFC\u51FA\u5230\u6A21\u5757 {2}
+
+# {0} - package in which the invisible class is declared
+# {1} - module in which {0} is declared
+# 0: symbol, 1: symbol
+compiler.misc.not.def.access.not.exported.to.module.from.unnamed=\u7A0B\u5E8F\u5305 {0} \u5DF2\u5728\u6A21\u5757 {1} \u4E2D\u58F0\u660E, \u4F46\u8BE5\u6A21\u5757\u672A\u5C06\u5B83\u5BFC\u51FA\u5230\u672A\u547D\u540D\u6A21\u5757
+
+# 0: symbol, 1: symbol
+compiler.err.not.def.access.class.intf.cant.access={1}.{0} \u662F\u5728\u4E0D\u53EF\u8BBF\u95EE\u7684\u7C7B\u6216\u63A5\u53E3\u4E2D\u5B9A\u4E49\u7684
+
+# 0: symbol, 1: symbol
+compiler.misc.not.def.access.class.intf.cant.access={1}.{0} \u662F\u5728\u4E0D\u53EF\u8BBF\u95EE\u7684\u7C7B\u6216\u63A5\u53E3\u4E2D\u5B9A\u4E49\u7684
+
+# 0: symbol, 1: symbol, 2: symbol, 3: message segment
+compiler.err.not.def.access.class.intf.cant.access.reason=\u7A0B\u5E8F\u5305 {2} \u4E2D\u7684 {1}.{0} \u4E0D\u53EF\u8BBF\u95EE\n({3})
+
+# 0: symbol, 1: symbol, 2: symbol, 3: message segment
+compiler.misc.not.def.access.class.intf.cant.access.reason=\u7A0B\u5E8F\u5305 {2} \u4E2D\u7684 {1}.{0} \u4E0D\u53EF\u8BBF\u95EE\n({3})
 
 # 0: symbol, 1: list of type, 2: type
 compiler.misc.cant.access.inner.cls.constr=\u65E0\u6CD5\u8BBF\u95EE\u6784\u9020\u5668 {0}({1})\n\u4F5C\u7528\u57DF\u4E2D\u6CA1\u6709\u7C7B\u578B\u4E3A{2}\u7684\u5C01\u95ED\u5B9E\u4F8B
@@ -627,6 +679,8 @@
 
 compiler.err.pkg.annotations.sb.in.package-info.java=\u7A0B\u5E8F\u5305\u6CE8\u91CA\u5E94\u5728\u6587\u4EF6 package-info.java \u4E2D
 
+compiler.err.no.pkg.in.module-info.java=\u7A0B\u5E8F\u5305\u5B50\u53E5\u4E0D\u5E94\u5728\u6587\u4EF6 module-info.java \u4E2D
+
 # 0: symbol
 compiler.err.pkg.clashes.with.class.of.same.name=\u7A0B\u5E8F\u5305{0}\u4E0E\u5E26\u6709\u76F8\u540C\u540D\u79F0\u7684\u7C7B\u51B2\u7A81
 
@@ -1048,6 +1102,9 @@
 
 compiler.warn.finally.cannot.complete=finally \u5B50\u53E5\u65E0\u6CD5\u6B63\u5E38\u5B8C\u6210
 
+# 0: name
+compiler.warn.poor.choice.for.module.name=\u6A21\u5757\u540D\u79F0 {0} \u5E94\u907F\u514D\u4EE5\u6570\u5B57\u7ED3\u5C3E
+
 # 0: symbol, 1: symbol
 compiler.warn.has.been.deprecated={1}\u4E2D\u7684{0}\u5DF2\u8FC7\u65F6
 
@@ -1055,6 +1112,12 @@
 compiler.warn.has.been.deprecated.for.removal={1} \u4E2D\u7684 {0} \u5DF2\u8FC7\u65F6, \u4E14\u6807\u8BB0\u4E3A\u5F85\u5220\u9664
 
 # 0: symbol
+compiler.warn.has.been.deprecated.module=\u6A21\u5757 {0} \u5DF2\u8FC7\u65F6
+
+# 0: symbol
+compiler.warn.has.been.deprecated.for.removal.module=\u6A21\u5757 {0} \u5DF2\u8FC7\u65F6, \u4E14\u6807\u8BB0\u4E3A\u5F85\u5220\u9664
+
+# 0: symbol
 compiler.warn.sun.proprietary={0}\u662F\u5185\u90E8\u4E13\u7528 API, \u53EF\u80FD\u4F1A\u5728\u672A\u6765\u53D1\u884C\u7248\u4E2D\u5220\u9664
 
 compiler.warn.illegal.char.for.encoding=\u7F16\u7801{0}\u7684\u4E0D\u53EF\u6620\u5C04\u5B57\u7B26
@@ -1210,6 +1273,8 @@
 # 0: symbol kind
 compiler.warn.deprecated.annotation.has.no.effect=@Deprecated \u6CE8\u91CA\u5BF9\u6B64 {0} \u58F0\u660E\u6CA1\u6709\u4EFB\u4F55\u6548\u679C
 
+compiler.warn.invalid.path=\u65E0\u6548\u6587\u4EF6\u540D: {0}
+
 compiler.warn.invalid.archive.file=\u4EE5\u4E0B\u8DEF\u5F84\u4E2D\u5B58\u5728\u610F\u5916\u7684\u6587\u4EF6: {0}
 
 compiler.warn.unexpected.archive.file=\u4EE5\u4E0B\u6863\u6848\u6587\u4EF6\u5B58\u5728\u610F\u5916\u7684\u6269\u5C55\u540D: {0}
@@ -1293,6 +1358,8 @@
 compiler.err.premature.eof=\u8FDB\u884C\u89E3\u6790\u65F6\u5DF2\u5230\u8FBE\u6587\u4EF6\u7ED3\u5C3E
 
 ## The following are related in form, but do not easily fit the above paradigm.
+compiler.err.expected.module=\u9700\u8981 ''module''
+
 compiler.err.dot.class.expected=\u9700\u8981 ''.class''
 
 ## The argument to this string will always be either 'case' or 'default'.
@@ -1358,6 +1425,12 @@
 
 compiler.misc.class.file.not.found=\u627E\u4E0D\u5230{0}\u7684\u7C7B\u6587\u4EF6
 
+# 0: string (constant value), 1: symbol (constant field), 2: type (field type)
+compiler.misc.bad.constant.range={1} \u7684\u5E38\u91CF\u503C ''{0}'' \u8D85\u51FA\u4E86 {2} \u7684\u9884\u671F\u8303\u56F4
+
+# 0: string (constant value), 1: symbol (constant field), 2: string (expected class)
+compiler.misc.bad.constant.value={1} \u7684\u5E38\u91CF\u503C ''{0}'' \u9519\u8BEF, \u9884\u671F\u4E3A {2}
+
 # 0: string (classfile major version), 1: string (classfile minor version)
 compiler.misc.invalid.default.interface=\u5728 {0}.{1} \u7248\u7C7B\u6587\u4EF6\u4E2D\u627E\u5230\u9ED8\u8BA4\u65B9\u6CD5
 
@@ -1518,6 +1591,9 @@
 
 compiler.misc.arg.length.mismatch=\u5B9E\u9645\u53C2\u6570\u5217\u8868\u548C\u5F62\u5F0F\u53C2\u6570\u5217\u8868\u957F\u5EA6\u4E0D\u540C
 
+# 0: string
+compiler.misc.wrong.number.type.args=\u7C7B\u578B\u53D8\u91CF\u6570\u76EE\u9519\u8BEF; \u9700\u8981{0}
+
 # 0: message segment
 compiler.misc.no.conforming.assignment.exists=\u53C2\u6570\u4E0D\u5339\u914D; {0}
 
@@ -1785,7 +1861,7 @@
 compiler.err.default.methods.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9ED8\u8BA4\u65B9\u6CD5\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9ED8\u8BA4\u65B9\u6CD5)
 
 # 0: string
-compiler.err.intersection.types.in.cast.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u8F6C\u6362\u4E2D\u7684\u4EA4\u53C9\u7C7B\u578B\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9ED8\u8BA4\u65B9\u6CD5)
+compiler.err.intersection.types.in.cast.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u8F6C\u6362\u4E2D\u7684\u4EA4\u53C9\u7C7B\u578B\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u8F6C\u6362\u4E2D\u7684\u4EA4\u53C9\u7C7B\u578B)
 
 # 0: string
 compiler.err.static.intf.methods.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9759\u6001\u63A5\u53E3\u65B9\u6CD5\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9759\u6001\u63A5\u53E3\u65B9\u6CD5)
@@ -1932,6 +2008,9 @@
 # 0: symbol
 compiler.err.module.not.found=\u627E\u4E0D\u5230\u6A21\u5757: {0}
 
+# 0: symbol
+compiler.warn.module.not.found=\u627E\u4E0D\u5230\u6A21\u5757: {0}
+
 compiler.err.too.many.modules=\u627E\u5230\u592A\u591A\u7684\u6A21\u5757\u58F0\u660E
 
 # 0: symbol
@@ -1941,7 +2020,18 @@
 compiler.err.duplicate.requires=\u91CD\u590D\u7684 requires \u6307\u4EE4: {0}
 
 # 0: symbol
-compiler.err.duplicate.exports=\u91CD\u590D\u7684 export \u6307\u4EE4: {0}
+compiler.err.conflicting.exports=\u91CD\u590D\u6216\u51B2\u7A81\u7684\u5BFC\u51FA\u64CD\u4F5C: {0}
+
+# 0: symbol
+compiler.err.conflicting.opens=\u91CD\u590D\u6216\u51B2\u7A81\u7684\u6253\u5F00\u64CD\u4F5C: {0}
+
+# 0: symbol
+compiler.err.conflicting.exports.to.module=\u91CD\u590D\u6216\u51B2\u7A81\u7684\u5BFC\u51FA\u5230\u6A21\u5757\u64CD\u4F5C: {0}
+
+# 0: symbol
+compiler.err.conflicting.opens.to.module=\u91CD\u590D\u6216\u51B2\u7A81\u7684\u6253\u5F00\u5230\u6A21\u5757\u64CD\u4F5C: {0}
+
+compiler.err.no.opens.unless.strong=\u53EA\u5141\u8BB8\u5728\u5F3A\u6A21\u5757\u4E2D\u4F7F\u7528 ''opens''
 
 # 0: symbol, 1: symbol
 compiler.err.duplicate.provides=\u91CD\u590D\u7684 provides \u6307\u4EE4: \u670D\u52A1 {0}, \u5B9E\u73B0 {1}
@@ -1952,15 +2042,14 @@
 # 0: symbol
 compiler.err.service.implementation.is.abstract=\u670D\u52A1\u5B9E\u73B0\u662F\u62BD\u8C61\u7C7B: {0}
 
-compiler.err.service.implementation.must.be.subtype.of.service.interface=\u670D\u52A1\u5B9E\u73B0\u7C7B\u578B\u5FC5\u987B\u662F\u670D\u52A1\u63A5\u53E3\u7C7B\u578B\u7684\u5B50\u7C7B\u578B
+compiler.err.service.implementation.must.be.subtype.of.service.interface=\u670D\u52A1\u5B9E\u73B0\u7C7B\u578B\u5FC5\u987B\u662F\u670D\u52A1\u63A5\u53E3\u7C7B\u578B\u7684\u5B50\u7C7B\u578B, \u6216\u8005\u5177\u6709\u540D\u4E3A "provider" \u7684, \u8FD4\u56DE\u670D\u52A1\u5B9E\u73B0\u7684\u516C\u5171\u9759\u6001\u65E0\u53C2\u6570\u65B9\u6CD5
+
+compiler.err.service.implementation.provider.return.must.be.subtype.of.service.interface="provider" \u65B9\u6CD5\u8FD4\u56DE\u7C7B\u578B\u5FC5\u987B\u662F\u670D\u52A1\u63A5\u53E3\u7C7B\u578B\u7684\u5B50\u7C7B\u578B
 
 # 0: symbol
 compiler.err.service.implementation.is.inner=\u670D\u52A1\u5B9E\u73B0\u662F\u5185\u90E8\u7C7B: {0}
 
 # 0: symbol
-compiler.err.service.definition.is.inner=\u670D\u52A1\u5B9A\u4E49\u662F\u5185\u90E8\u7C7B: {0}
-
-# 0: symbol
 compiler.err.service.definition.is.enum=\u670D\u52A1\u5B9A\u4E49\u662F\u679A\u4E3E: {0}
 
 # 0: symbol
@@ -1982,6 +2071,12 @@
 # 0: name, 1: name
 compiler.misc.module.name.mismatch=\u6A21\u5757\u540D\u79F0 {0} \u4E0E\u9884\u671F\u540D\u79F0 {1} \u4E0D\u5339\u914D
 
+# 0: name
+compiler.err.module.non.zero.opens=\u6253\u5F00\u7684\u6A21\u5757 {0} \u5177\u6709\u975E\u96F6 opens_count
+
+# 0: name
+compiler.misc.module.non.zero.opens=\u6253\u5F00\u7684\u6A21\u5757 {0} \u5177\u6709\u975E\u96F6 opens_count
+
 compiler.err.module.decl.sb.in.module-info.java=\u6A21\u5757\u58F0\u660E\u5E94\u8BE5\u5728\u540D\u4E3A module-info.java \u7684\u6587\u4EF6\u4E2D
 
 compiler.err.module-info.with.xmodule.sourcepath=\u6E90\u8DEF\u5F84\u4E0A\u7684 -Xmodule \u4E0E module-info \u7684\u7EC4\u5408\u975E\u6CD5
@@ -2014,20 +2109,19 @@
 # 0: fragment, 1: name
 compiler.err.duplicate.module.on.path={1} \u4E2D\u7684 {0} \u4E0A\u5B58\u5728\n\u91CD\u590D\u7684\u6A21\u5757
 
-# 0:  string
-compiler.err.xaddexports.malformed.entry=--add-exports {0} \u7684\u503C\u9519\u8BEF
-
-# 0: string
-compiler.err.xaddexports.too.many={0} \u5B58\u5728\u591A\u4E2A --add-exports \u9009\u9879
-
-# 0:  string
-compiler.err.xaddreads.malformed.entry=--add-reads {0} \u7684\u503C\u9519\u8BEF
-
-# 0: string
-compiler.err.xaddreads.too.many={0} \u5B58\u5728\u591A\u4E2A --add-reads \u9009\u9879
+# 0: option name, 1: string
+compiler.warn.bad.name.for.option={0} \u9009\u9879\u7684\u503C\u4E2D\u6709\u9519\u8BEF\u7684\u540D\u79F0: ''{1}''
+
+# 0: option name, 1: string
+compiler.err.bad.name.for.option={0} \u9009\u9879\u7684\u503C\u4E2D\u6709\u9519\u8BEF\u7684\u540D\u79F0: ''{1}''
+
+# 0: option name, 1: symbol
+compiler.warn.module.for.option.not.found=\u627E\u4E0D\u5230 {0} \u9009\u9879\u4E2D\u7684\u6A21\u5757\u540D\u79F0: {1}
 
 compiler.err.addmods.all.module.path.invalid=--add-modules ALL-MODULE-PATH \u53EA\u80FD\u5728\u7F16\u8BD1\u672A\u547D\u540D\u6A21\u5757\u65F6\u4F7F\u7528
 
+compiler.warn.addopens.ignored=--add-opens \u5728\u7F16\u8BD1\u65F6\u6CA1\u6709\u4EFB\u4F55\u6548\u679C
+
 compiler.misc.locn.module_source_path=\u6A21\u5757\u6E90\u8DEF\u5F84
 
 compiler.misc.locn.upgrade_module_path=\u5347\u7EA7\u6A21\u5757\u8DEF\u5F84
@@ -2038,9 +2132,6 @@
 
 compiler.misc.cant.resolve.modules=\u65E0\u6CD5\u89E3\u6790\u6A21\u5757
 
-# 0: symbol
-compiler.err.cant.find.module=\u627E\u4E0D\u5230\u6A21\u5757: {0}
-
 # 0: string
 compiler.err.invalid.module.specifier=\u4E0D\u5141\u8BB8\u6A21\u5757\u8BF4\u660E\u7B26: {0}
 
@@ -2052,7 +2143,7 @@
 # 0: kind name, 1: symbol, 2: symbol
 compiler.warn.leaks.not.accessible.unexported=\u672A\u5BFC\u51FA\u6A21\u5757 {2} \u4E2D\u7684 {0} {1}
 # 0: kind name, 1: symbol, 2: symbol
-compiler.warn.leaks.not.accessible.not.required.public=\u672A\u4F7F\u7528 ''requires public'' \u95F4\u63A5\u5BFC\u51FA\u6A21\u5757 {2} \u4E2D\u7684 {0} {1}
+compiler.warn.leaks.not.accessible.not.required.transitive=\u672A\u4F7F\u7528 ''requires transitive'' \u95F4\u63A5\u5BFC\u51FA\u6A21\u5757 {2} \u4E2D\u7684 {0} {1}
 # 0: kind name, 1: symbol, 2: symbol
 compiler.warn.leaks.not.accessible.unexported.qualified=\u6A21\u5757 {2} \u4E2D\u7684 {0} {1} \u53EF\u80FD\u5BF9\u9700\u8981\u8BE5\u6A21\u5757\u7684\u6240\u6709\u5BA2\u6237\u673A\u90FD\u4E0D\u53EF\u89C1
 
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -119,6 +119,8 @@
 
 javac.opt.Xlint.desc.finally=\u6B63\u5E38\u306B\u5B8C\u4E86\u3057\u306A\u3044finally\u7BC0\u306B\u3064\u3044\u3066\u8B66\u544A\u3057\u307E\u3059\u3002
 
+javac.opt.Xlint.desc.module=\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B7\u30B9\u30C6\u30E0\u95A2\u9023\u306E\u554F\u984C\u306B\u3064\u3044\u3066\u8B66\u544A\u3057\u307E\u3059\u3002
+
 javac.opt.Xlint.desc.options=\u30B3\u30DE\u30F3\u30C9\u884C\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4F7F\u7528\u306B\u95A2\u3059\u308B\u554F\u984C\u306B\u3064\u3044\u3066\u8B66\u544A\u3057\u307E\u3059\u3002
 
 javac.opt.Xlint.desc.overloads=\u30E1\u30BD\u30C3\u30C9\u306E\u30AA\u30FC\u30D0\u30FC\u30ED\u30FC\u30C9\u306B\u95A2\u3059\u308B\u554F\u984C\u306B\u3064\u3044\u3066\u8B66\u544A\u3057\u307E\u3059\u3002
@@ -156,8 +158,8 @@
 javac.opt.Xdoclint.package.desc=\u7279\u5B9A\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3057\u307E\u3059\u3002\u5404<package>\u306F\u3001\n\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u4FEE\u98FE\u3055\u308C\u305F\u540D\u524D\u3001\u307E\u305F\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u306E\u63A5\u982D\u8F9E\u306E\u5F8C\u306B''.*''\u3092\u6307\u5B9A\n(\u6307\u5B9A\u3057\u305F\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u3059\u3079\u3066\u306E\u30B5\u30D6\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u62E1\u5F35)\u3057\u305F\u3082\u306E\u3067\u3059\u3002\u5404<package>\u306E\u524D\u306B\n'-'\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u6307\u5B9A\u3057\u305F1\u3064\u4EE5\u4E0A\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u95A2\u3059\u308B\u30C1\u30A7\u30C3\u30AF\u3092\u7121\u52B9\u306B\u3067\u304D\u307E\u3059\u3002
 
 javac.opt.Xstdout=\u6A19\u6E96\u51FA\u529B\u3092\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3059\u308B
-javac.opt.X=\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6982\u8981\u3092\u51FA\u529B\u3059\u308B
-javac.opt.help=\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6982\u8981\u3092\u51FA\u529B\u3059\u308B
+javac.opt.X=\u8FFD\u52A0\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3057\u307E\u3059
+javac.opt.help=\u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059
 javac.opt.print=\u6307\u5B9A\u3057\u305F\u578B\u306E\u30C6\u30AD\u30B9\u30C8\u8868\u793A\u3092\u51FA\u529B\u3059\u308B
 javac.opt.printRounds=\u6CE8\u91C8\u51E6\u7406\u306E\u5F80\u5FA9\u306B\u3064\u3044\u3066\u306E\u60C5\u5831\u3092\u5370\u5237\u3059\u308B
 javac.opt.printProcessorInfo=\u30D7\u30ED\u30BB\u30C3\u30B5\u304C\u51E6\u7406\u3092\u4F9D\u983C\u3055\u308C\u308B\u6CE8\u91C8\u306B\u3064\u3044\u3066\u306E\u60C5\u5831\u3092\u5370\u5237\u3059\u308B
@@ -177,6 +179,8 @@
 javac.opt.arg.addmods=<module>(,<module>)*
 javac.opt.limitmods=\u53C2\u7167\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u9818\u57DF\u3092\u5236\u9650\u3057\u307E\u3059
 javac.opt.arg.limitmods=<module>(,<module>)*
+javac.opt.module.version=\u30B3\u30F3\u30D1\u30A4\u30EB\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u6307\u5B9A\u3057\u307E\u3059
+javac.opt.arg.module.version=<\u30D0\u30FC\u30B8\u30E7\u30F3>
 javac.opt.inherit_runtime_environment=\u5B9F\u884C\u6642\u74B0\u5883\u304B\u3089\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B7\u30B9\u30C6\u30E0\u69CB\u6210\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u7D99\u627F\u3057\u307E\u3059\u3002
 
 ## errors
@@ -203,6 +207,9 @@
 javac.err.file.not.directory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0}
 javac.err.file.not.file=\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0}
 javac.err.cannot.access.runtime.env=\u5B9F\u884C\u6642\u74B0\u5883\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093
+javac.err.bad.value.for.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024\u304C\u4E0D\u6B63\u3067\u3059: ''{1}''
+javac.err.no.value.for.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
+javac.err.repeated.value.for.patch.module={0}\u306B\u5BFE\u3057\u3066--patch-module\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
 
 ## messages
 
@@ -210,7 +217,7 @@
 
 javac.msg.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <source files>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30EA\u30B9\u30C8\u306B\u3064\u3044\u3066\u306F\u3001--help\u3092\u4F7F\u7528\u3057\u307E\u3059
 
-javac.msg.usage.nonstandard.footer=\u3053\u308C\u3089\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002
+javac.msg.usage.nonstandard.footer=\u3053\u306E\u8FFD\u52A0\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002
 
 javac.msg.bug=\u30B3\u30F3\u30D1\u30A4\u30E9\u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F({0})\u3002Bug Database (http://bugs.java.com)\u3067\u91CD\u8907\u304C\u306A\u3044\u304B\u3092\u3054\u78BA\u8A8D\u306E\u3046\u3048\u3001Java bug\u30EC\u30DD\u30FC\u30C8\u30FB\u30DA\u30FC\u30B8(http://bugreport.java.com)\u3067Java\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u5BFE\u3059\u308Bbug\u306E\u767B\u9332\u3092\u304A\u9858\u3044\u3044\u305F\u3057\u307E\u3059\u3002\u30EC\u30DD\u30FC\u30C8\u306B\u306F\u3001\u305D\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3068\u4E0B\u8A18\u306E\u8A3A\u65AD\u5185\u5BB9\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\u3054\u5354\u529B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002
 
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -119,6 +119,8 @@
 
 javac.opt.Xlint.desc.finally=\u6709\u5173 finally \u5B50\u53E5\u672A\u6B63\u5E38\u7EC8\u6B62\u7684\u8B66\u544A\u3002
 
+javac.opt.Xlint.desc.module=\u6709\u5173\u6A21\u5757\u7CFB\u7EDF\u76F8\u5173\u95EE\u9898\u7684\u8B66\u544A\u3002
+
 javac.opt.Xlint.desc.options=\u6709\u5173\u4E0E\u4F7F\u7528\u547D\u4EE4\u884C\u9009\u9879\u76F8\u5173\u7684\u95EE\u9898\u7684\u8B66\u544A\u3002
 
 javac.opt.Xlint.desc.overloads=\u6709\u5173\u4E0E\u65B9\u6CD5\u91CD\u8F7D\u76F8\u5173\u7684\u95EE\u9898\u7684\u8B66\u544A\u3002
@@ -156,8 +158,8 @@
 javac.opt.Xdoclint.package.desc=\u5728\u7279\u5B9A\u7684\u7A0B\u5E8F\u5305\u4E2D\u542F\u7528\u6216\u7981\u7528\u68C0\u67E5\u3002\u6BCF\u4E2A <\u7A0B\u5E8F\u5305> \u662F\n\u7A0B\u5E8F\u5305\u7684\u9650\u5B9A\u540D\u79F0, \u6216\u7A0B\u5E8F\u5305\u540D\u79F0\u524D\u7F00\u540E\u8DDF '.*', \n\u5B83\u6269\u5C55\u5230\u7ED9\u5B9A\u7A0B\u5E8F\u5305\u7684\u6240\u6709\u5B50\u7A0B\u5E8F\u5305\u3002\u5728\u6BCF\u4E2A <\u7A0B\u5E8F\u5305>\n\u524D\u9762\u52A0\u4E0A '-' \u53EF\u4EE5\u4E3A\u6307\u5B9A\u7A0B\u5E8F\u5305\u7981\u7528\u68C0\u67E5\u3002
 
 javac.opt.Xstdout=\u91CD\u5B9A\u5411\u6807\u51C6\u8F93\u51FA
-javac.opt.X=\u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u63D0\u8981
-javac.opt.help=\u8F93\u51FA\u6807\u51C6\u9009\u9879\u7684\u63D0\u8981
+javac.opt.X=\u8F93\u51FA\u989D\u5916\u9009\u9879\u7684\u5E2E\u52A9
+javac.opt.help=\u8F93\u51FA\u6B64\u5E2E\u52A9\u6D88\u606F
 javac.opt.print=\u8F93\u51FA\u6307\u5B9A\u7C7B\u578B\u7684\u6587\u672C\u8868\u793A
 javac.opt.printRounds=\u8F93\u51FA\u6709\u5173\u6CE8\u91CA\u5904\u7406\u5FAA\u73AF\u7684\u4FE1\u606F
 javac.opt.printProcessorInfo=\u8F93\u51FA\u6709\u5173\u8BF7\u6C42\u5904\u7406\u7A0B\u5E8F\u5904\u7406\u54EA\u4E9B\u6CE8\u91CA\u7684\u4FE1\u606F
@@ -177,6 +179,8 @@
 javac.opt.arg.addmods=<\u6A21\u5757>(,<\u6A21\u5757>)*
 javac.opt.limitmods=\u9650\u5236\u53EF\u89C2\u5BDF\u6A21\u5757\u7684\u9886\u57DF
 javac.opt.arg.limitmods=<\u6A21\u5757>(,<\u6A21\u5757>)*
+javac.opt.module.version=\u6307\u5B9A\u6B63\u5728\u7F16\u8BD1\u7684\u6A21\u5757\u7248\u672C
+javac.opt.arg.module.version=<\u7248\u672C>
 javac.opt.inherit_runtime_environment=\u4ECE\u8FD0\u884C\u65F6\u73AF\u5883\u7EE7\u627F\u6A21\u5757\u7CFB\u7EDF\u914D\u7F6E\u9009\u9879\u3002
 
 ## errors
@@ -203,6 +207,9 @@
 javac.err.file.not.directory=\u4E0D\u662F\u76EE\u5F55: {0}
 javac.err.file.not.file=\u4E0D\u662F\u6587\u4EF6: {0}
 javac.err.cannot.access.runtime.env=\u65E0\u6CD5\u8BBF\u95EE\u8FD0\u884C\u65F6\u73AF\u5883
+javac.err.bad.value.for.option={0} \u9009\u9879\u7684\u503C\u9519\u8BEF: ''{1}''
+javac.err.no.value.for.option={0} \u9009\u9879\u6CA1\u6709\u503C
+javac.err.repeated.value.for.patch.module=\u4E3A {0} \u591A\u6B21\u6307\u5B9A\u4E86 --patch-module
 
 ## messages
 
@@ -210,7 +217,7 @@
 
 javac.msg.usage=\u7528\u6CD5: {0} <\u9009\u9879> <\u6E90\u6587\u4EF6>\n\u4F7F\u7528 --help \u53EF\u5217\u51FA\u53EF\u80FD\u7684\u9009\u9879
 
-javac.msg.usage.nonstandard.footer=\u8FD9\u4E9B\u9009\u9879\u90FD\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002
+javac.msg.usage.nonstandard.footer=\u8FD9\u4E9B\u989D\u5916\u9009\u9879\u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002
 
 javac.msg.bug=\u7F16\u8BD1\u5668 ({0}) \u4E2D\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF\u3002\u5982\u679C\u5728 Bug Database (http://bugs.java.com) \u4E2D\u6CA1\u6709\u627E\u5230\u8BE5\u9519\u8BEF, \u8BF7\u901A\u8FC7 Java Bug \u62A5\u544A\u9875 (http://bugreport.java.com) \u5EFA\u7ACB\u8BE5 Java \u7F16\u8BD1\u5668 Bug\u3002\u8BF7\u5728\u62A5\u544A\u4E2D\u9644\u4E0A\u60A8\u7684\u7A0B\u5E8F\u548C\u4EE5\u4E0B\u8BCA\u65AD\u4FE1\u606F\u3002\u8C22\u8C22\u3002
 
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -71,6 +71,7 @@
 main.release.bootclasspath.conflict=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306F-release\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
 main.unsupported.release.version=\u30EA\u30EA\u30FC\u30B9\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
 main.release.not.standard.file.manager=-release\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u6307\u5B9A\u3055\u308C\u305FJavaFileManager\u306FStandardJavaFileManager\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+main.option.invalid.value={0}
 tag.illegal_char_in_arr_dim=\u30BF\u30B0{0}: \u914D\u5217\u306E\u5927\u304D\u3055\u3001\u30E1\u30BD\u30C3\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF{1}\u306B\u69CB\u6587\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059
 tag.illegal_see_tag=\u30BF\u30B0{0}: \u30E1\u30BD\u30C3\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF{1}\u306B\u69CB\u6587\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059
 tag.missing_comma_space=\u30BF\u30B0{0}: \u30E1\u30BD\u30C3\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF{1}\u306B\u30AB\u30F3\u30DE\u307E\u305F\u306F\u7A7A\u767D\u6587\u5B57\u304C\u3042\u308A\u307E\u305B\u3093
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -71,6 +71,7 @@
 main.release.bootclasspath.conflict=\u9009\u9879{0}\u65E0\u6CD5\u4E0E -release \u4E00\u8D77\u4F7F\u7528
 main.unsupported.release.version=\u4E0D\u652F\u6301\u53D1\u884C\u7248\u672C {0}
 main.release.not.standard.file.manager=\u6307\u5B9A\u4E86 -release \u9009\u9879, \u4F46\u63D0\u4F9B\u7684 JavaFileManager \u4E0D\u662F StandardJavaFileManager\u3002
+main.option.invalid.value={0}
 tag.illegal_char_in_arr_dim=\u6807\u8BB0{0}: \u6570\u7EC4\u7EF4\u4E2D\u6709\u8BED\u6CD5\u9519\u8BEF, \u65B9\u6CD5\u53C2\u6570: {1}
 tag.illegal_see_tag=\u6807\u8BB0{0}: \u65B9\u6CD5\u53C2\u6570\u4E2D\u6709\u8BED\u6CD5\u9519\u8BEF: {1}
 tag.missing_comma_space=\u6807\u8BB0{0}: \u65B9\u6CD5\u53C2\u6570\u4E2D\u7F3A\u5C11\u9017\u53F7\u6216\u7A7A\u683C: {1}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -3,10 +3,12 @@
 doclet.Overview=\u6982\u8981
 doclet.Window_Overview=\u6982\u8981\u30EA\u30B9\u30C8
 doclet.Window_Overview_Summary=\u6982\u8981
+doclet.Element=\u8981\u7D20
 doclet.Package=\u30D1\u30C3\u30B1\u30FC\u30B8
 doclet.Module=\u30E2\u30B8\u30E5\u30FC\u30EB
 doclet.All_Packages=\u3059\u3079\u3066\u306E\u30D1\u30C3\u30B1\u30FC\u30B8
 doclet.All_Modules=\u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB
+doclet.None=\u306A\u3057
 doclet.Tree=\u968E\u5C64\u30C4\u30EA\u30FC
 doclet.Class_Hierarchy=\u30AF\u30E9\u30B9\u968E\u5C64
 doclet.Window_Class_Hierarchy=\u30AF\u30E9\u30B9\u968E\u5C64
@@ -71,6 +73,8 @@
 doclet.see.class_or_package_not_accessible=\u30BF\u30B0{0}: \u53C2\u7167\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: {1}
 doclet.tag.invalid_usage=\u30BF\u30B0{0}\u306E\u4F7F\u7528\u65B9\u6CD5\u304C\u7121\u52B9\u3067\u3059
 doclet.Deprecated_API=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044API
+doclet.Deprecated_For_Removal=\u524A\u9664\u4E88\u5B9A\u306E\u975E\u63A8\u5968
+doclet.Deprecated_Modules=\u975E\u63A8\u5968\u30E2\u30B8\u30E5\u30FC\u30EB
 doclet.Deprecated_Packages=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30D1\u30C3\u30B1\u30FC\u30B8
 doclet.Deprecated_Classes=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30AF\u30E9\u30B9
 doclet.Deprecated_Enums=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B
@@ -83,6 +87,8 @@
 doclet.Deprecated_Methods=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30E1\u30BD\u30C3\u30C9
 doclet.Deprecated_Enum_Constants=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B\u5B9A\u6570
 doclet.Deprecated_Annotation_Type_Members=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B\u306E\u8981\u7D20
+doclet.deprecated_for_removal=\u524A\u9664\u4E88\u5B9A\u306E\u975E\u63A8\u5968
+doclet.deprecated_modules=\u975E\u63A8\u5968\u30E2\u30B8\u30E5\u30FC\u30EB
 doclet.deprecated_packages=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30D1\u30C3\u30B1\u30FC\u30B8
 doclet.deprecated_classes=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30AF\u30E9\u30B9
 doclet.deprecated_enums=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -3,10 +3,12 @@
 doclet.Overview=\u6982\u89C8
 doclet.Window_Overview=\u6982\u89C8\u5217\u8868
 doclet.Window_Overview_Summary=\u6982\u89C8
+doclet.Element=\u5143\u7D20
 doclet.Package=\u7A0B\u5E8F\u5305
 doclet.Module=\u6A21\u5757
 doclet.All_Packages=\u6240\u6709\u7A0B\u5E8F\u5305
 doclet.All_Modules=\u5168\u90E8\u6A21\u5757
+doclet.None=\u65E0
 doclet.Tree=\u6811
 doclet.Class_Hierarchy=\u7C7B\u5206\u5C42\u7ED3\u6784
 doclet.Window_Class_Hierarchy=\u7C7B\u5206\u5C42\u7ED3\u6784
@@ -71,6 +73,8 @@
 doclet.see.class_or_package_not_accessible=\u6807\u8BB0{0}: \u65E0\u6CD5\u8BBF\u95EE\u5F15\u7528: {1}
 doclet.tag.invalid_usage=\u6807\u8BB0 {0} \u7684\u7528\u6CD5\u65E0\u6548
 doclet.Deprecated_API=\u5DF2\u8FC7\u65F6\u7684 API
+doclet.Deprecated_For_Removal=\u5DF2\u8FC7\u65F6, \u5F85\u5220\u9664
+doclet.Deprecated_Modules=\u5DF2\u8FC7\u65F6\u6A21\u5757
 doclet.Deprecated_Packages=\u5DF2\u8FC7\u65F6\u7A0B\u5E8F\u5305
 doclet.Deprecated_Classes=\u5DF2\u8FC7\u65F6\u7684\u7C7B
 doclet.Deprecated_Enums=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E
@@ -83,6 +87,8 @@
 doclet.Deprecated_Methods=\u5DF2\u8FC7\u65F6\u7684\u65B9\u6CD5
 doclet.Deprecated_Enum_Constants=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E\u5E38\u91CF
 doclet.Deprecated_Annotation_Type_Members=\u5DF2\u8FC7\u65F6\u7684\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20
+doclet.deprecated_for_removal=\u5DF2\u8FC7\u65F6, \u5F85\u5220\u9664
+doclet.deprecated_modules=\u5DF2\u8FC7\u65F6\u6A21\u5757
 doclet.deprecated_packages=\u5DF2\u8FC7\u65F6\u7A0B\u5E8F\u5305
 doclet.deprecated_classes=\u5DF2\u8FC7\u65F6\u7684\u7C7B
 doclet.deprecated_enums=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -74,7 +74,13 @@
 doclet.javafx_tag_misuse=\u30BF\u30B0@propertyGetter\u3001@propertySetter\u304A\u3088\u3073@propertyDescription\u306F\u3001JavaFX\u306E\u30D7\u30ED\u30D1\u30C6\u30A3getter\u3068setter\u306E\u307F\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
 doclet.Package_Summary=\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u6982\u8981
 doclet.Requires_Summary=\u5FC5\u8981
+doclet.Additional_Modules_Required_Summary=\u8FFD\u52A0\u30E2\u30B8\u30E5\u30FC\u30EB\u5FC5\u9808
+doclet.Additional_Exported_Packages_Summary=\u8FFD\u52A0\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30D1\u30C3\u30B1\u30FC\u30B8
+doclet.Additional_Opened_Packages_Summary=\u8FFD\u52A0\u306E\u30AA\u30FC\u30D7\u30F3\u3055\u308C\u305F\u30D1\u30C3\u30B1\u30FC\u30B8
 doclet.Exported_Packages_Summary=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30D1\u30C3\u30B1\u30FC\u30B8
+doclet.Opened_Packages_Summary=\u30AA\u30FC\u30D7\u30F3\u3055\u308C\u305F\u30D1\u30C3\u30B1\u30FC\u30B8
+doclet.Concealed_Packages_Summary=\u96A0\u3057\u30D1\u30C3\u30B1\u30FC\u30B8
+doclet.Packages_Summary=\u30D1\u30C3\u30B1\u30FC\u30B8
 doclet.Uses_Summary=\u4F7F\u7528
 doclet.Provides_Summary=\u63D0\u4F9B
 doclet.Module_Summary=\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u6982\u8981
@@ -142,6 +148,7 @@
 doclet.Method_Detail=\u30E1\u30BD\u30C3\u30C9\u306E\u8A73\u7D30
 doclet.Constructor_Detail=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u8A73\u7D30
 doclet.Deprecated=\u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+doclet.DeprecatedForRemoval=\u975E\u63A8\u5968\u3001\u524A\u9664\u4E88\u5B9A: \u3053\u306EAPI\u8981\u7D20\u306F\u5C06\u6765\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u524A\u9664\u4E88\u5B9A\u3067\u3059\u3002 
 doclet.Hidden=\u975E\u8868\u793A
 doclet.Groupname_already_used=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u304A\u3044\u3066\u3001\u3059\u3067\u306B\u30B0\u30EB\u30FC\u30D7\u540D\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0}
 doclet.value_tag_invalid_reference={0}(@value\u30BF\u30B0\u306B\u3088\u308A\u53C2\u7167\u3055\u308C\u3066\u3044\u308B)\u306F\u4E0D\u660E\u306A\u53C2\u7167\u3067\u3059\u3002
@@ -152,6 +159,7 @@
 doclet.Use_Table_Summary=\u8868\u3001{0}\u306E\u30EA\u30B9\u30C8\u304A\u3088\u3073\u8AAC\u660E\u306E\u4F7F\u7528
 doclet.Constants_Table_Summary={0}\u8868\u3001\u5B9A\u6570\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30EA\u30B9\u30C8\u304A\u3088\u3073\u5024
 doclet.Member_Table_Summary={0}\u8868\u3001{1}\u306E\u30EA\u30B9\u30C8\u304A\u3088\u3073\u8AAC\u660E
+doclet.Additional_Packages_Table_Summary={0}\u8868\u3001{1}\u306E\u30EA\u30B9\u30C8\u304A\u3088\u3073{2}
 doclet.fields=\u30D5\u30A3\u30FC\u30EB\u30C9
 doclet.Fields=\u30D5\u30A3\u30FC\u30EB\u30C9
 doclet.properties=\u30D7\u30ED\u30D1\u30C6\u30A3
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -74,7 +74,13 @@
 doclet.javafx_tag_misuse=\u6807\u8BB0 @propertyGetter, @propertySetter \u548C @propertyDescription \u53EA\u80FD\u5728 JavaFX \u5C5E\u6027 getter \u548C setter \u4E2D\u4F7F\u7528\u3002
 doclet.Package_Summary=\u7A0B\u5E8F\u5305\u6982\u8981
 doclet.Requires_Summary=\u5FC5\u9700\u9879
+doclet.Additional_Modules_Required_Summary=\u6240\u9700\u7684\u9644\u52A0\u6A21\u5757
+doclet.Additional_Exported_Packages_Summary=\u5BFC\u51FA\u7684\u9644\u52A0\u7A0B\u5E8F\u5305
+doclet.Additional_Opened_Packages_Summary=\u6253\u5F00\u7684\u9644\u52A0\u7A0B\u5E8F\u5305
 doclet.Exported_Packages_Summary=\u5BFC\u51FA\u7684\u7A0B\u5E8F\u5305
+doclet.Opened_Packages_Summary=\u6253\u5F00\u7684\u7A0B\u5E8F\u5305
+doclet.Concealed_Packages_Summary=\u9690\u85CF\u7684\u7A0B\u5E8F\u5305
+doclet.Packages_Summary=\u7A0B\u5E8F\u5305
 doclet.Uses_Summary=\u4F7F\u7528
 doclet.Provides_Summary=\u63D0\u4F9B
 doclet.Module_Summary=\u6A21\u5757\u6982\u8981
@@ -142,6 +148,7 @@
 doclet.Method_Detail=\u65B9\u6CD5\u8BE6\u7EC6\u8D44\u6599
 doclet.Constructor_Detail=\u6784\u9020\u5668\u8BE6\u7EC6\u8D44\u6599
 doclet.Deprecated=\u5DF2\u8FC7\u65F6\u3002
+doclet.DeprecatedForRemoval=\u5DF2\u8FC7\u65F6, \u5F85\u5220\u9664: \u6B64 API \u5143\u7D20\u5C06\u4ECE\u4EE5\u540E\u7684\u7248\u672C\u4E2D\u5220\u9664\u3002
 doclet.Hidden=\u9690\u85CF
 doclet.Groupname_already_used=\u5728 -group \u9009\u9879\u4E2D, groupname \u5DF2\u4F7F\u7528: {0}
 doclet.value_tag_invalid_reference={0} (\u7531 @value \u6807\u8BB0\u5F15\u7528) \u4E3A\u672A\u77E5\u5F15\u7528\u3002
@@ -152,6 +159,7 @@
 doclet.Use_Table_Summary=\u4F7F\u7528\u8868, \u5217\u8868{0}\u548C\u89E3\u91CA
 doclet.Constants_Table_Summary={0}\u8868, \u5217\u8868\u5E38\u91CF\u5B57\u6BB5\u548C\u503C
 doclet.Member_Table_Summary={0}\u8868, \u5217\u8868{1}\u548C\u89E3\u91CA
+doclet.Additional_Packages_Table_Summary={0} \u8868, \u5176\u4E2D\u5217\u51FA {1} \u548C {2}
 doclet.fields=\u5B57\u6BB5
 doclet.Fields=\u5B57\u6BB5
 doclet.properties=\u5C5E\u6027
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -421,9 +421,7 @@
 
         Result result = OK;
         try {
-            result = parseAndExecute(options, fileObjects)
-                    ? OK
-                    : ERROR;
+            result = parseAndExecute(options, fileObjects);
         } catch (com.sun.tools.javac.main.Option.InvalidValueException e) {
             messager.printError(e.getMessage());
             Throwable t = e.getCause();
@@ -501,7 +499,7 @@
      * Main program - internal
      */
     @SuppressWarnings("unchecked")
-    private boolean parseAndExecute(List<String> argList, Iterable<? extends JavaFileObject> fileObjects)
+    private Result parseAndExecute(List<String> argList, Iterable<? extends JavaFileObject> fileObjects)
             throws ToolException, OptionException, com.sun.tools.javac.main.Option.InvalidValueException {
         long tm = System.currentTimeMillis();
 
@@ -521,7 +519,14 @@
         Arguments arguments = Arguments.instance(context);
         arguments.init(ProgramName);
         arguments.allowEmpty();
-        arguments.validate();
+        if (!arguments.validate()) {
+            // Arguments does not always increase the error count in the
+            // case of errors, so increment the error count only if it has
+            // not been updated previously, preventing complaints by callers
+            if (!messager.hasErrors() && !messager.hasWarnings())
+                messager.nerrors++;
+            return CMDERR;
+        }
 
         if (fileManager instanceof BaseFileManager) {
             ((BaseFileManager) fileManager).handleOptions(fileManagerOpts);
@@ -586,7 +591,7 @@
         }
 
         JavadocTool comp = JavadocTool.make0(context);
-        if (comp == null) return false;
+        if (comp == null) return ABNORMAL;
 
         DocletEnvironment docEnv = comp.getEnvironment(jdtoolOpts,
                 javaNames,
@@ -600,8 +605,9 @@
             trees.setBreakIterator(BreakIterator.getSentenceInstance(locale));
         }
         // pass off control to the doclet
-        boolean ok = docEnv != null;
-        if (ok) ok = doclet.run(docEnv);
+        Result returnStatus = docEnv != null && doclet.run(docEnv)
+                ? OK
+                : ERROR;
 
         // We're done.
         if (compOpts.get("-verbose") != null) {
@@ -609,7 +615,7 @@
             messager.notice("main.done_in", Long.toString(tm));
         }
 
-        return ok;
+        return returnStatus;
     }
 
     boolean matches(List<String> names, String arg) {
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -51,7 +51,7 @@
 main.opt.show.module.contents.desc=\u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u306E\u7C92\u5EA6\u3092\u6307\u5B9A\u3059\u308B\u3002\n\u4F7F\u7528\u53EF\u80FD\u306A\u5024\u306F\u3001"api"\u307E\u305F\u306F"all"\u3067\u3059\u3002
 
 main.opt.expand.requires.arg=<value>
-main.opt.expand.requires.desc=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30BB\u30C3\u30C8\u3092\u62E1\u5F35\u3059\u308B\u305F\u3081\u306E\n\u30C4\u30FC\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u660E\u793A\u7684\u306B\n\u6307\u5B9A\u3055\u308C\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u307F\u304C\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3055\u308C\u307E\u3059\u3002"public"\u306E\u5024\u306F\u3001\n\u305D\u308C\u3089\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3059\u3079\u3066\u306E"requires public"\u4F9D\u5B58\u6027\u3092\u8FFD\u52A0\u3067\n\u542B\u3081\u307E\u3059\u3002"all"\u306E\u5024\u306F\u3001\u305D\u308C\u3089\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3059\u3079\u3066\u306E\u4F9D\u5B58\u6027\u3092\n\u542B\u3081\u307E\u3059\u3002
+main.opt.expand.requires.desc=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30BB\u30C3\u30C8\u3092\u62E1\u5F35\u3059\u308B\u305F\u3081\u306E\n\u30C4\u30FC\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u660E\u793A\u7684\u306B\n\u6307\u5B9A\u3055\u308C\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u307F\u304C\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3055\u308C\u307E\u3059\u3002"transitive"\u306E\u5024\u306F\u3001\n\u305D\u308C\u3089\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3059\u3079\u3066\u306E"requires transitive"\u4F9D\u5B58\u6027\u3092\u8FFD\u52A0\u3067\n\u542B\u3081\u307E\u3059\u3002"all"\u306E\u5024\u306F\u3001\u305D\u308C\u3089\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3059\u3079\u3066\u306E\u4F9D\u5B58\u6027\u3092\n\u542B\u3081\u307E\u3059\u3002
 
 main.opt.help.desc=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A\u3057\u3066\u7D42\u4E86\u3059\u308B
 
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -51,7 +51,7 @@
 main.opt.show.module.contents.desc=\u6307\u5B9A\u6A21\u5757\u58F0\u660E\u7684\u6587\u6863\u7C92\u5EA6\u3002\n\u53EF\u80FD\u7684\u503C\u4E3A "api" \u6216 "all"\u3002
 
 main.opt.expand.requires.arg=<\u503C>
-main.opt.expand.requires.desc=\u6307\u793A\u5DE5\u5177\u5C55\u5F00\u8981\u6587\u6863\u5316\u7684\u6A21\u5757\u96C6\u3002\n\u9ED8\u8BA4\u60C5\u51B5\u4E0B, \u5C06\u4EC5\u6587\u6863\u5316\u547D\u4EE4\u884C\u4E2D\u660E\u786E\n\u6307\u5B9A\u7684\u6A21\u5757\u3002\u503C "public" \u5C06\u989D\u5916\u5305\u542B\n\u8FD9\u4E9B\u6A21\u5757\u7684\u6240\u6709 "requires public"\n\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\u503C "all" \u5C06\u5305\u542B\u8FD9\u4E9B\u6A21\u5757\n\u7684\u6240\u6709\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
+main.opt.expand.requires.desc=\u6307\u793A\u5DE5\u5177\u5C55\u5F00\u8981\u6587\u6863\u5316\u7684\u6A21\u5757\u96C6\u3002\n\u9ED8\u8BA4\u60C5\u51B5\u4E0B, \u5C06\u4EC5\u6587\u6863\u5316\u547D\u4EE4\u884C\u4E2D\u660E\u786E\n\u6307\u5B9A\u7684\u6A21\u5757\u3002\u503C "transitive" \u5C06\u989D\u5916\u5305\u542B\n\u8FD9\u4E9B\u6A21\u5757\u7684\u6240\u6709 "requires transitive"\n\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\u503C "all" \u5C06\u5305\u542B\u8FD9\u4E9B\u6A21\u5757\n\u7684\u6240\u6709\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
 
 main.opt.help.desc=\u663E\u793A\u547D\u4EE4\u884C\u9009\u9879\u5E76\u9000\u51FA
 
--- a/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -25,7 +25,7 @@
 main.usage.summary=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <classes>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30EA\u30B9\u30C8\u306B\u3064\u3044\u3066\u306F\u3001-help\u3092\u4F7F\u7528\u3057\u307E\u3059
 
 warn.prefix=\u8B66\u544A:
-warn.unexpected.class=\u30D0\u30A4\u30CA\u30EA\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306B{1}\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059
+warn.unexpected.class=\u30D5\u30A1\u30A4\u30EB{0}\u306B\u30AF\u30E9\u30B9{1}\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093
 
 note.prefix=\u6CE8:
 
--- a/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -25,7 +25,7 @@
 main.usage.summary=\u7528\u6CD5: {0} <options> <classes>\n\u4F7F\u7528 -help \u5217\u51FA\u53EF\u80FD\u7684\u9009\u9879
 
 warn.prefix=\u8B66\u544A:
-warn.unexpected.class=\u4E8C\u8FDB\u5236\u6587\u4EF6{0}\u5305\u542B{1}
+warn.unexpected.class=\u6587\u4EF6 {0} \u4E0D\u5305\u542B\u7C7B {1}
 
 note.prefix=\u6CE8:
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/resources/jdeprscan_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -0,0 +1,29 @@
+main.usage=\u4F7F\u7528\u65B9\u6CD5: jdeprscan [options] '{dir|jar|class}' ...\n\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n       --class-path PATH\n       --for-removal\n       --full-version\n  -h   --help\n  -l   --list\n       --release 6|7|8|9\n  -v   --verbose\n       --version
+
+main.help=\u975E\u63A8\u5968API\u306E\u4F7F\u7528\u306B\u3064\u3044\u3066\u5404\u5F15\u6570\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u307E\u3059\u3002\u5F15\u6570\u306B\u306F\u3001\n\u30D1\u30C3\u30B1\u30FC\u30B8\u968E\u5C64\u306E\u30EB\u30FC\u30C8\u3092\u6307\u5B9A\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30D5\u30A1\u30A4\u30EB\u3001\n\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30AF\u30E9\u30B9\u540D\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u30AF\u30E9\u30B9\u540D\u306F\u3001\n\u5B8C\u5168\u4FEE\u98FE\u30AF\u30E9\u30B9\u540D\u3092\u4F7F\u7528\u3057\u3066\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30CD\u30B9\u30C8\u3055\u308C\u305F\n\u30AF\u30E9\u30B9\u306F$\u3067\u533A\u5207\u308A\u307E\u3059\u3002\u4F8B:\n\n    java.lang.Thread$State\n\n--class-path\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u4F9D\u5B58\u3059\u308B\u30AF\u30E9\u30B9\u306E\u89E3\u6C7A\u306E\u305F\u3081\u306E\n\u691C\u7D22\u30D1\u30B9\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n--for-removal\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u30B9\u30AD\u30E3\u30F3\u3068\u30EA\u30B9\u30C8\u5316\u3092\u524A\u9664\u4E88\u5B9A\u3067\u975E\u63A8\u5968\u306EAPI\u306B\n\u9650\u5B9A\u3057\u307E\u3059\u3002\u30EA\u30EA\u30FC\u30B9\u5024\u304C6\u30017\u307E\u305F\u306F8\u306E\u5834\u5408\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n--full-version\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u30C4\u30FC\u30EB\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u6587\u5B57\u5217\u306E\u5168\u4F53\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\n\n--help\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u5168\u4F53\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\n\n--list (-l)\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u63A8\u5968API\u30BB\u30C3\u30C8\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\u30B9\u30AD\u30E3\u30F3\u306F\u884C\u308F\u308C\u306A\u3044\n\u305F\u3081\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u307E\u305F\u306F\u30AF\u30E9\u30B9\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n\n--release\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u30B9\u30AD\u30E3\u30F3\u3059\u308B\u975E\u63A8\u5968API\u306E\u30BB\u30C3\u30C8\u3092\u63D0\u4F9B\u3059\u308BJava SE\n\u30EA\u30EA\u30FC\u30B9\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n--verbose (-v)\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001\u51E6\u7406\u4E2D\u306B\u8FFD\u52A0\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3067\u304D\u307E\u3059\u3002\n\n--version\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u7C21\u7565\u5316\u3055\u308C\u305F\u30C4\u30FC\u30EB\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u6587\u5B57\u5217\u3092\u51FA\u529B\u3057\u307E\u3059\u3002
+
+main.xhelp=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30AA\u30D7\u30B7\u30E7\u30F3:\n\n  --Xload-class CLASS\n      \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u304B\u3089\u975E\u63A8\u5968\u60C5\u5831\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\n  --Xload-csv CSVFILE\n      \u6307\u5B9A\u3057\u305FCSV\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u975E\u63A8\u5968\u60C5\u5831\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\n  --Xload-dir DIR\n      \u6307\u5B9A\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u3042\u308B\u30AF\u30E9\u30B9\u968E\u5C64\u304B\u3089\u975E\u63A8\u5968\u60C5\u5831\u3092\n      \u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\n  --Xload-jar JARFILE\n      \u6307\u5B9A\u3057\u305FJAR\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u975E\u63A8\u5968\u60C5\u5831\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\n  --Xload-jdk9 JAVA_HOME\n      JAVA_HOME\u306B\u3042\u308BJDK\u304B\u3089\u975E\u63A8\u5968\u60C5\u5831\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\n      \u30E2\u30B8\u30E5\u30E9JDK\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n  --Xload-old-jdk JAVA_HOME\n      JAVA_HOME\u306B\u3042\u308BJDK\u304B\u3089\u975E\u63A8\u5968\u60C5\u5831\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\n      \u30E2\u30B8\u30E5\u30E9JDK\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u6307\u5B9A\u3057\u305FJDK\u306F\n      rt.jar\u30D5\u30A1\u30A4\u30EB\u3092\u6301\u3064"\u30AF\u30E9\u30B7\u30C3\u30AF"\u306AJDK\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n  --Xload-self\n      \u5B9F\u884C\u4E2DJDK\u30A4\u30E1\u30FC\u30B8\u306Ejrt:\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u3092\u8D70\u67FB\u3059\u308B\u3053\u3068\u306B\u3088\u308A\n      \u975E\u63A8\u5968\u60C5\u5831\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\n  --Xcompiler-arg ARG\n      \u30B3\u30F3\u30D1\u30A4\u30E9\u5F15\u6570\u306E\u30EA\u30B9\u30C8\u306BARG\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002\n  --Xcsv-comment COMMENT\n      \u30B3\u30E1\u30F3\u30C8\u884C\u3068\u3057\u3066COMMENT\u3092\u51FA\u529BCSV\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0\u3057\u307E\u3059\u3002\n      -Xprint-csv\u3082\u6307\u5B9A\u3057\u305F\u5834\u5408\u306E\u307F\u6709\u52B9\u3067\u3059\u3002\n  --Xhelp\n      \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\n  --Xprint-csv\n      \u3042\u3089\u3086\u308B\u30AF\u30E9\u30B9\u307E\u305F\u306FJAR\u30D5\u30A1\u30A4\u30EB\u3092\u30B9\u30AD\u30E3\u30F3\u3059\u308B\u304B\u308F\u308A\u306B\n      \u30ED\u30FC\u30C9\u3057\u305F\u975E\u63A8\u5968\u60C5\u5831\u3092\u542B\u3080CSV\u30D5\u30A1\u30A4\u30EB\u3092\u51FA\u529B\u3057\u307E\u3059\u3002
+
+scan.process.class=\u51E6\u7406\u30AF\u30E9\u30B9 {0}...
+
+scan.dep.normal=
+scan.dep.removal=(forRemoval=true)
+
+scan.err.exception=\u30A8\u30E9\u30FC: \u4E88\u671F\u3057\u306A\u3044\u4F8B\u5916{0}
+scan.err.noclass=\u30A8\u30E9\u30FC: \u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+scan.err.nofile=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+scan.err.nomethod=\u30A8\u30E9\u30FC: Methodref {0}.{1}:{2}\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093
+
+scan.head.jar=JAR\u30D5\u30A1\u30A4\u30EB {0}:
+scan.head.dir=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA {0}:
+
+scan.out.extends={0} {1}\u304C\u975E\u63A8\u5968\u306E\u30AF\u30E9\u30B9{2}\u3092\u62E1\u5F35\u3057\u3066\u3044\u307E\u3059 {3}
+scan.out.implements={0} {1}\u304C\u975E\u63A8\u5968\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{2}\u3092\u5B9F\u88C5\u3057\u3066\u3044\u307E\u3059 {3}
+scan.out.usesclass={0} {1}\u304C\u975E\u63A8\u5968\u306E\u30AF\u30E9\u30B9{2}\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059 {3}
+scan.out.usesmethod={0} {1}\u304C\u975E\u63A8\u5968\u30E1\u30BD\u30C3\u30C9{2}::{3}{4}\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059 {5}
+scan.out.usesintfmethod={0} {1}\u304C\u975E\u63A8\u5968\u30E1\u30BD\u30C3\u30C9{2}::{3}{4}\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059 {5}
+scan.out.usesfield={0} {1}\u304C\u975E\u63A8\u5968\u30D5\u30A3\u30FC\u30EB\u30C9{2}::{3}{4}\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059
+scan.out.hasfield={0} {1}\u306B\u306F\u3001\u975E\u63A8\u5968\u306E\u30BF\u30A4\u30D7{3} {4}\u306E\u3001{2}\u3068\u3044\u3046\u540D\u524D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308A\u307E\u3059
+scan.out.methodparmtype={0} {1}\u306B\u306F\u3001\u975E\u63A8\u5968\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7{3} {4}\u3092\u6301\u3064{2}\u3068\u3044\u3046\u540D\u524D\u306E\u30E1\u30BD\u30C3\u30C9\u304C\u3042\u308A\u307E\u3059
+scan.out.methodrettype={0} {1}\u306B\u306F\u3001\u975E\u63A8\u5968\u306E\u623B\u308A\u30BF\u30A4\u30D7{3} {4}\u3092\u6301\u3064{2}\u3068\u3044\u3046\u540D\u524D\u306E\u30E1\u30BD\u30C3\u30C9\u304C\u3042\u308A\u307E\u3059
+scan.out.methodoverride={0} {1}\u304C\u975E\u63A8\u5968\u30E1\u30BD\u30C3\u30C9{2}::{3}{4}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059 {5}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/resources/jdeprscan_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -0,0 +1,29 @@
+main.usage=\u7528\u6CD5: jdeprscan [\u9009\u9879] '{dir|jar|class}' ...\n\n\u9009\u9879:\n       --class-path PATH\n       --for-removal\n       --full-version\n  -h   --help\n  -l   --list\n       --release 6|7|8|9\n  -v   --verbose\n       --version
+
+main.help=\u626B\u63CF\u6BCF\u4E2A\u53C2\u6570\u4EE5\u4E86\u89E3\u662F\u5426\u4F7F\u7528\u4E86\u8FC7\u65F6\u7684 API\u3002\n\u53C2\u6570\u53EF\u4EE5\u662F\u6307\u5B9A\u7A0B\u5E8F\u5305\u5206\u5C42\u7ED3\u6784, JAR \u6587\u4EF6, \n\u7C7B\u6587\u4EF6\u6216\u7C7B\u540D\u7684\u6839\u7684\u76EE\u5F55\u3002\u7C7B\u540D\u5FC5\u987B\n\u4F7F\u7528\u5168\u9650\u5B9A\u7C7B\u540D\u6307\u5B9A, \u5E76\u4F7F\u7528 $ \u5206\u9694\u7B26\n\u6307\u5B9A\u5D4C\u5957\u7C7B, \u4F8B\u5982,\n\n    java.lang.Thread$State\n\n--class-path \u9009\u9879\u63D0\u4F9B\u4E86\u7528\u4E8E\u89E3\u6790\u4ECE\u5C5E\u7C7B\u7684\n\u641C\u7D22\u8DEF\u5F84\u3002\n\n--for-removal \u9009\u9879\u9650\u5236\u626B\u63CF\u6216\u5217\u51FA\u5DF2\u8FC7\u65F6\u5E76\u5F85\u5220\u9664\n\u7684 API\u3002\u4E0D\u80FD\u4E0E\u53D1\u884C\u7248\u503C 6, 7 \u6216 8 \u4E00\u8D77\u4F7F\u7528\u3002\n\n--full-version \u9009\u9879\u8F93\u51FA\u5DE5\u5177\u7684\u5B8C\u6574\u7248\u672C\u5B57\u7B26\u4E32\u3002\n\n--help \u9009\u9879\u8F93\u51FA\u5B8C\u6574\u7684\u5E2E\u52A9\u6D88\u606F\u3002\n\n--list (-l) \u9009\u9879\u8F93\u51FA\u4E00\u7EC4\u5DF2\u8FC7\u65F6\u7684 API\u3002\u4E0D\u6267\u884C\u626B\u63CF, \n\u56E0\u6B64\u4E0D\u5E94\u63D0\u4F9B\u4EFB\u4F55\u76EE\u5F55, jar \u6216\u7C7B\u53C2\u6570\u3002\n\n--release \u9009\u9879\u6307\u5B9A\u63D0\u4F9B\u8981\u626B\u63CF\u7684\u5DF2\u8FC7\u65F6 API \u96C6\n\u7684 Java SE \u53D1\u884C\u7248\u3002\n\n--verbose (-v) \u9009\u9879\u5728\u5904\u7406\u671F\u95F4\u542F\u7528\u9644\u52A0\u6D88\u606F\u8F93\u51FA\u3002\n\n--version \u9009\u9879\u8F93\u51FA\u5DE5\u5177\u7684\u7F29\u5199\u7248\u672C\u5B57\u7B26\u4E32\u3002
+
+main.xhelp=\u4E0D\u652F\u6301\u7684\u9009\u9879:\n\n  --Xload-class CLASS\n      \u4ECE\u5DF2\u547D\u540D\u7C7B\u52A0\u8F7D\u8FC7\u65F6\u4FE1\u606F\u3002\n  --Xload-csv CSVFILE\n      \u4ECE\u5DF2\u547D\u540D CSV \u6587\u4EF6\u52A0\u8F7D\u8FC7\u65F6\u4FE1\u606F\u3002\n  --Xload-dir DIR\n      \u4ECE\u5DF2\u547D\u540D\u76EE\u5F55\u4E2D\u7684\u7C7B\u5206\u5C42\u7ED3\u6784\u52A0\u8F7D\n      \u8FC7\u65F6\u4FE1\u606F\u3002\n  --Xload-jar JARFILE\n      \u4ECE\u5DF2\u547D\u540D JAR \u6587\u4EF6\u52A0\u8F7D\u8FC7\u65F6\u4FE1\u606F\u3002\n  --Xload-jdk9 JAVA_HOME\n      \u4ECE\u4F4D\u4E8E JAVA_HOME \u7684 JDK \u4E2D\u52A0\u8F7D\u8FC7\u65F6\u4FE1\u606F, \n      \u8BE5 JDK \u5FC5\u987B\u662F\u4E00\u4E2A\u6A21\u5757\u5316 JDK\u3002\n  --Xload-old-jdk JAVA_HOME\n      \u4ECE\u4F4D\u4E8E JAVA_HOME \u7684 JDK \u4E2D\u52A0\u8F7D\u8FC7\u65F6\u4FE1\u606F, \n      \u8BE5 JDK \u4E0D\u80FD\u662F\u4E00\u4E2A\u6A21\u5757\u5316 JDK\u3002\u76F8\u53CD, \n      \u5DF2\u547D\u540D JDK \u5FC5\u987B\u662F\u5E26\u6709 rt.jar \u6587\u4EF6\u7684 "\u7ECF\u5178" JDK\u3002\n  --Xload-self\n      \u901A\u8FC7\u904D\u5386\u6B63\u5728\u8FD0\u884C\u7684 JDK \u6620\u50CF\u7684 jrt: \u6587\u4EF6\u7CFB\u7EDF:\n      \u52A0\u8F7D\u8FC7\u65F6\u4FE1\u606F\u3002\n  --Xcompiler-arg ARG\n      \u5C06 ARG \u6DFB\u52A0\u5230\u7F16\u8BD1\u5668\u53C2\u6570\u5217\u8868\u4E2D\u3002\n  --Xcsv-comment COMMENT\n      \u5C06 COMMENT \u4F5C\u4E3A\u6CE8\u91CA\u884C\u6DFB\u52A0\u5230\u8F93\u51FA CSV \u6587\u4EF6\u3002\n      \u4EC5\u5F53\u540C\u65F6\u63D0\u4F9B\u4E86 -Xprint-csv \u624D\u6709\u6548\u3002\n  --Xhelp\n      \u8F93\u51FA\u6B64\u6D88\u606F\u3002\n  --Xprint-csv\n      \u8F93\u51FA\u5305\u542B\u5DF2\u52A0\u8F7D\u8FC7\u65F6\u4FE1\u606F\u7684 CSV \u6587\u4EF6\n      \u800C\u4E0D\u626B\u63CF\u4EFB\u4F55\u7C7B\u6216 JAR \u6587\u4EF6\u3002
+
+scan.process.class=\u6B63\u5728\u5904\u7406\u7C7B {0}...
+
+scan.dep.normal=
+scan.dep.removal=(forRemoval=true)
+
+scan.err.exception=\u9519\u8BEF: \u51FA\u73B0\u610F\u5916\u7684\u5F02\u5E38\u9519\u8BEF {0}
+scan.err.noclass=\u9519\u8BEF: \u627E\u4E0D\u5230\u7C7B {0}
+scan.err.nofile=\u9519\u8BEF: \u627E\u4E0D\u5230\u6587\u4EF6 {0}
+scan.err.nomethod=\u9519\u8BEF: \u65E0\u6CD5\u89E3\u6790 Methodref {0}.{1}:{2}
+
+scan.head.jar=Jar \u6587\u4EF6 {0}:
+scan.head.dir=\u76EE\u5F55 {0}:
+
+scan.out.extends={0} {1} \u6269\u5C55\u5DF2\u8FC7\u65F6\u7684\u7C7B {2} {3}
+scan.out.implements={0} {1} \u5B9E\u73B0\u5DF2\u8FC7\u65F6\u7684\u63A5\u53E3 {2} {3}
+scan.out.usesclass={0} {1} \u4F7F\u7528\u5DF2\u8FC7\u65F6\u7684\u7C7B {2} {3}
+scan.out.usesmethod={0} {1} \u4F7F\u7528\u5DF2\u8FC7\u65F6\u7684\u65B9\u6CD5 {2}::{3}{4} {5}
+scan.out.usesintfmethod={0} {1} \u4F7F\u7528\u5DF2\u8FC7\u65F6\u7684\u65B9\u6CD5 {2}::{3}{4} {5}
+scan.out.usesfield={0} {1} \u4F7F\u7528\u5DF2\u8FC7\u65F6\u7684\u5B57\u6BB5 {2}::{3} {4}
+scan.out.hasfield={0} {1} \u5177\u6709\u540D\u4E3A {2} \u7684\u5B57\u6BB5, \u5176\u7C7B\u578B\u4E3A\u5DF2\u8FC7\u65F6\u7684 {3} {4}
+scan.out.methodparmtype={0} {1} \u5177\u6709\u540D\u4E3A {2} \u7684\u65B9\u6CD5, \u5176\u53C2\u6570\u7C7B\u578B\u4E3A\u5DF2\u8FC7\u65F6\u7684 {3} {4}
+scan.out.methodrettype={0} {1} \u5177\u6709\u540D\u4E3A {2} \u7684\u65B9\u6CD5, \u5176\u8FD4\u56DE\u7C7B\u578B\u4E3A\u5DF2\u8FC7\u65F6\u7684 {3} {4}
+scan.out.methodoverride={0} {1} \u8986\u76D6\u5DF2\u8FC7\u65F6\u7684\u65B9\u6CD5 {2}::{3}{4} {5}
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -44,7 +44,9 @@
 
 main.opt.apionly=\  -apionly\n  --api-only                    \u5206\u6790\u3092API\u3001\u3064\u307E\u308A\u3001\u30D1\u30D6\u30EA\u30C3\u30AF\u30FB\u30AF\u30E9\u30B9\u306E\n                                \u30D1\u30D6\u30EA\u30C3\u30AF\u30FB\u30E1\u30F3\u30D0\u30FC\u304A\u3088\u3073\u4FDD\u8B77\u3055\u308C\u305F\u30E1\u30F3\u30D0\u30FC\u306E\n                                \u7F72\u540D\u306B\u304A\u3051\u308B\u4F9D\u5B58\u6027(\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30BF\u30A4\u30D7\u3001\u30E1\u30BD\u30C3\u30C9\u30FB\n                                \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\u3001\u623B\u3055\u308C\u305F\u30BF\u30A4\u30D7\u3001\u30C1\u30A7\u30C3\u30AF\u3055\u308C\u305F\n                                \u4F8B\u5916\u30BF\u30A4\u30D7\u306A\u3069)\u306B\u5236\u9650\u3057\u307E\u3059\u3002
 
-main.opt.generate-module-info=\  --generate-module-info <dir>  \u6307\u5B9A\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306Bmodule-info.java\u3092\u751F\u6210\u3057\u307E\u3059\u3002\n                                \u6307\u5B9A\u3057\u305FJAR\u30D5\u30A1\u30A4\u30EB\u3092\u5206\u6790\u3057\u307E\u3059\u3002\n                                \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F--dot-output\u307E\u305F\u306F--class-path\n                                \u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
+main.opt.generate-module-info=\  --generate-module-info <dir>  \u6307\u5B9A\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306Bmodule-info.java\u3092\u751F\u6210\u3057\u307E\u3059\u3002\n                                \u6307\u5B9A\u3057\u305FJAR\u30D5\u30A1\u30A4\u30EB\u3092\u5206\u6790\u3057\u307E\u3059\u3002\n                                \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F--dot-output\u307E\u305F\u306F--class-path\n                                \u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30AA\u30FC\u30D7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u306F\n                                --generate-open-module\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+
+main.opt.generate-open-module=\  --generate-open-module <dir>  \u6307\u5B9A\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u3001\u6307\u5B9A\u3057\u305F\n                                JAR\u30D5\u30A1\u30A4\u30EB\u306Emodule-info.java\u3092\u30AA\u30FC\u30D7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u3057\u3066\n                                \u751F\u6210\u3057\u307E\u3059\u3002\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F--dot-output\n                                \u307E\u305F\u306F--class-path\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
 
 main.opt.check=\  --check <module-name>[,<module-name>...\n                                \u6307\u5B9A\u3057\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u4F9D\u5B58\u6027\u3092\u5206\u6790\u3057\u307E\u3059\n                                \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u3001\u5206\u6790\u5F8C\u306E\u7D50\u679C\u30E2\u30B8\u30E5\u30FC\u30EB\u4F9D\u5B58\u6027\n                                \u304A\u3088\u3073\u9077\u79FB\u524A\u6E1B\u5F8C\u306E\u30B0\u30E9\u30D5\u3092\n                                \u51FA\u529B\u3057\u307E\u3059\u3002\n                                \u672A\u4F7F\u7528\u306E\u4FEE\u98FE\u3055\u308C\u305F\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3082\u8B58\u5225\u3057\u307E\u3059\u3002
 
@@ -53,14 +55,20 @@
 
 main.opt.jdkinternals=\  -jdkinternals\n  --jdk-internals               JDK\u5185\u90E8API\u306E\u30AF\u30E9\u30B9\u30EC\u30D9\u30EB\u306E\u4F9D\u5B58\u6027\u3092\u691C\u51FA\u3057\u307E\u3059\u3002\n                                \u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001-include\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3057\u306A\u3044\u3068\u3001\n                                --class-path\u306E\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u3068\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u5206\u6790\u3057\u307E\u3059\u3002\n                                \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F-p\u3001-e\u304A\u3088\u3073-s\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u4E00\u7DD2\u306B\n                                \u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n                                \u8B66\u544A: JDK\u5185\u90E8API\u306F\u3001\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002
 
+main.opt.list-deps=\  --list-deps                   \u4F9D\u5B58\u95A2\u4FC2\u3068JDK\u5185\u90E8API\u306E\u4F7F\u7528\u3092\n                                \u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002
+
+main.opt.list-reduced-deps=\  --list-reduced-deps           --list-deps\u3068\u540C\u3058\u3067\u3059\u304C\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B0\u30E9\u30D5\n                                \u304B\u3089\u542B\u610F\u3055\u308C\u305F\u8AAD\u53D6\u308A\u30A8\u30C3\u30B8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u305B\u3093\n                                \u30E2\u30B8\u30E5\u30FC\u30EBM1\u304CM2\u3068M3\u306B\u4F9D\u5B58\u3057\u3066\u304A\u308A\u3001\n                                M2\u304CM3\u4E0A\u3067requires public\u3067\u3042\u308B\u5834\u5408\u3001M3\u3092\u8AAD\u307F\u53D6\u308BM1\u306F\n                                \u542B\u610F\u3055\u308C\u3066\u304A\u308A\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B0\u30E9\u30D5\u304B\u3089\u524A\u9664\u3055\u308C\u307E\u3059\u3002
+
 main.opt.depth=\  -depth=<depth>                \u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u5206\u6790\u306E\u6DF1\u3055\u3092\n                                \u6307\u5B9A\u3057\u307E\u3059
 
 main.opt.q=\  -q       -quiet               --generate-module-info\u51FA\u529B\u3067\n                                 \u6B20\u843D\u3057\u3066\u3044\u308B\u4F9D\u5B58\u6027\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002
 
 main.opt.multi-release=\  --multi-release <version>     \u30DE\u30EB\u30C1\u30EA\u30EA\u30FC\u30B9jar\u30D5\u30A1\u30A4\u30EB\u3092\u51E6\u7406\u3059\u308B\u969B\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\n                                \u6307\u5B9A\u3057\u307E\u3059\u3002<version>\u306F\u30019\u307E\u305F\u306F\u30D9\u30FC\u30B9\u4EE5\u4E0A\u306E\n                                \u6574\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
 
+err.command.set=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u3068{1}\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
 err.unknown.option=\u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
 err.missing.arg={0}\u306B\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+err.missing.dependences=\u4F9D\u5B58\u6027\u304C\u6B20\u843D\u3057\u3066\u3044\u307E\u3059
 err.invalid.arg.for.option=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059: {0}
 err.option.after.class=\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u30AF\u30E9\u30B9\u306E\u524D\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
 err.genmoduleinfo.not.jarfile={0}\u306F\u3001--generate-module-info\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3068\u3082\u306B\u6307\u5B9A\u3067\u304D\u306A\u3044\u30E2\u30B8\u30E5\u30E9JAR\u30D5\u30A1\u30A4\u30EB\u3067\u3059
@@ -68,11 +76,11 @@
 err.profiles.msg=\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u60C5\u5831\u304C\u3042\u308A\u307E\u305B\u3093
 err.exception.message={0}
 err.invalid.path=\u7121\u52B9\u306A\u30D1\u30B9: {0}
-err.invalid.module.option={0}\u306F{1}\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u4E00\u7DD2\u306B\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
-err.invalid.filters=--package (-p)\u3001--regex (-e)\u3001--require\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u3044\u305A\u308C\u304B\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059
+err.invalid.options={0}\u306F{1}\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
 err.module.not.found=\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
 err.root.module.not.set=\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30BB\u30C3\u30C8\u304C\u7A7A\u3067\u3059
-err.invalid.inverse.option={0}\u306F--inverse\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+err.option.already.specified={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+err.filter.not.specified=--package (-p)\u3001--regex (-e)\u3001--require\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 err.multirelease.option.exists={0}\u306F\u30DE\u30EB\u30C1\u30EA\u30EA\u30FC\u30B9jar\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u304C\u3001--multi-release\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
 err.multirelease.option.notfound={0}\u306F\u30DE\u30EB\u30C1\u30EA\u30EA\u30FC\u30B9jar\u30D5\u30A1\u30A4\u30EB\u3067\u3059\u304C\u3001--multi-release\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
 err.multirelease.version.associated=\u30AF\u30E9\u30B9{0}\u306F\u3059\u3067\u306B\u30D0\u30FC\u30B8\u30E7\u30F3{1}\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u3059\u3002\u30D0\u30FC\u30B8\u30E7\u30F3{2}\u306E\u8FFD\u52A0\u3092\u8A66\u307F\u307E\u3059
@@ -82,5 +90,10 @@
 warn.split.package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F{1} {2}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
 warn.replace.useJDKInternals=JDK\u5185\u90E8API\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u304A\u3089\u305A\u3001JDK\u5B9F\u88C5\u5C02\u7528\u3067\u3059\u304C\u3001\u4E92\u63DB\u6027\u306A\u3057\u3067\n\u524A\u9664\u307E\u305F\u306F\u5909\u66F4\u3055\u308C\u308B\u5834\u5408\u304C\u3042\u308A\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u4E2D\u65AD\u3055\u305B\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\nJDK\u5185\u90E8API\u306E\u4F9D\u5B58\u6027\u3092\u524A\u9664\u3059\u308B\u3088\u3046\u30B3\u30FC\u30C9\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002\nJDK\u5185\u90E8API\u306E\u7F6E\u63DB\u306B\u95A2\u3059\u308B\u6700\u65B0\u306E\u66F4\u65B0\u306B\u3064\u3044\u3066\u306F\u3001\u6B21\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044:\n{0}
 
+split.package=\u5206\u5272\u30D1\u30C3\u30B1\u30FC\u30B8: {0} {1}\n
+inverse.transitive.dependencies.on={0}\u4E0A\u3067\u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u3092\u9006\u8EE2\u3057\u307E\u3059
+inverse.transitive.dependencies.matching={0}\u306B\u4E00\u81F4\u3059\u308B\u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u3092\u9006\u8EE2\u3057\u307E\u3059
+internal.api.column.header=JDK\u5185\u90E8API
+public.api.replacement.column.header=\u4FEE\u6B63\u5019\u88DC
 artifact.not.found=\u898B\u3064\u304B\u308A\u307E\u305B\u3093
 jdeps.wiki.url=https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -44,7 +44,9 @@
 
 main.opt.apionly=\  -apionly\n  --api-only                    \u901A\u8FC7\u516C\u5171\u7C7B (\u5305\u62EC\u5B57\u6BB5\u7C7B\u578B, \u65B9\u6CD5\n                                \u53C2\u6570\u7C7B\u578B, \u8FD4\u56DE\u7C7B\u578B, \u53D7\u63A7\u5F02\u5E38\u9519\u8BEF\n                                \u7C7B\u578B\u7B49) \u7684\u516C\u5171\u548C\u53D7\u4FDD\u62A4\u6210\u5458\u7684\u7B7E\u540D\n                                \u9650\u5236\u5BF9 API (\u5373\u88AB\u4F9D\u8D56\u5BF9\u8C61)\n                                \u8FDB\u884C\u5206\u6790\u3002
 
-main.opt.generate-module-info=\  --generate-module-info <\u76EE\u5F55> \u5728\u6307\u5B9A\u76EE\u5F55\u4E0B\u751F\u6210 module-info.java\u3002\n                                \u5C06\u5206\u6790\u6307\u5B9A\u7684 JAR \u6587\u4EF6\u3002\n                                \u6B64\u9009\u9879\u4E0D\u80FD\u4E0E --dot-output \n                                \u6216 --class-path \u4E00\u8D77\u4F7F\u7528\u3002
+main.opt.generate-module-info=\  --generate-module-info <\u76EE\u5F55> \u5728\u6307\u5B9A\u76EE\u5F55\u4E0B\u751F\u6210 module-info.java\u3002\n                                \u5C06\u5206\u6790\u6307\u5B9A\u7684 JAR \u6587\u4EF6\u3002\n                                \u6B64\u9009\u9879\u4E0D\u80FD\u4E0E --dot-output \n                                \u6216 --class-path \u4E00\u8D77\u4F7F\u7528\u3002\u5BF9\u6253\u5F00\u7684\n                                \u6A21\u5757\u4F7F\u7528 --generate-open-module \u9009\u9879\u3002
+
+main.opt.generate-open-module=\  --generate-open-module <dir>  \u4EE5\u6253\u5F00\u6A21\u5757\u7684\u65B9\u5F0F\u4E3A\u6307\u5B9A\u76EE\u5F55\u4E0B\u7684\n                                \u6307\u5B9A JAR \u6587\u4EF6\u751F\u6210 module-info.java\u3002\n                                \u6B64\u9009\u9879\u4E0D\u80FD\u4E0E --dot-output \u6216\n                                --class-path \u4E00\u8D77\u4F7F\u7528\u3002
 
 main.opt.check=\  --check <\u6A21\u5757\u540D\u79F0>[,<\u6A21\u5757\u540D\u79F0>...\n                                \u5206\u6790\u6307\u5B9A\u6A21\u5757\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\n                                \u5B83\u8F93\u51FA\u6A21\u5757\u63CF\u8FF0\u7B26, \u5206\u6790\u4E4B\u540E\n                                \u751F\u6210\u7684\u6A21\u5757\u88AB\u4F9D\u8D56\u5BF9\u8C61\u4EE5\u53CA\n                                \u8F6C\u6362\u51CF\u5C11\u4E4B\u540E\u7684\u56FE\u5F62\u3002\u5B83\u8FD8\n                                \u6307\u793A\u4EFB\u4F55\u672A\u4F7F\u7528\u7684\u5408\u683C\u5BFC\u51FA\u3002
 
@@ -53,14 +55,20 @@
 
 main.opt.jdkinternals=\  -jdkinternals\n  --jdk-internals               \u5728 JDK \u5185\u90E8 API \u4E0A\u67E5\u627E\u7C7B\u7EA7\u522B\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\n                                \u9664\u975E\u6307\u5B9A\u4E86 -include \u9009\u9879, \u5426\u5219\u9ED8\u8BA4\u60C5\u51B5\u4E0B,\n                                \u5B83\u5206\u6790 --class-path \u4E0A\u7684\u6240\u6709\u7C7B\u548C\u8F93\u5165\u6587\u4EF6\u3002\n                                \u6B64\u9009\u9879\u4E0D\u80FD\u4E0E -p, -e \u548C -s \u9009\u9879\n                                \u4E00\u8D77\u4F7F\u7528\u3002\n                                \u8B66\u544A: \u65E0\u6CD5\u8BBF\u95EE JDK \u5185\u90E8 API\u3002
 
+main.opt.list-deps=\  --list-deps                   \u5217\u51FA JDK \u5185\u90E8 API \u7684\n                                \u88AB\u4F9D\u8D56\u5BF9\u8C61\u548C\u4F7F\u7528\u60C5\u51B5\u3002
+
+main.opt.list-reduced-deps=\  --list-reduced-deps           \u4E0E --list-deps \u76F8\u540C, \u4E0D\u5217\u51FA\n                                \u6A21\u5757\u56FE\u4E2D\u7684\u9690\u5F0F\u8BFB\u53D6\u7EF4\u8FB9\u3002\n                                \u5982\u679C\u6A21\u5757 M1 \u4F9D\u8D56\u4E8E M2 \u548C M3,\n                                M2 \u8981\u6C42\u5728 M3 \u4E0A\u662F\u516C\u5171\u7684, \u5219 M1 \u8BFB\u53D6 M3 \n                                \u7684\u64CD\u4F5C\u662F\u9690\u5F0F\u7684, \u5E76\u4E14\u4F1A\u4ECE\u6A21\u5757\u56FE\u4E2D\u5220\u9664\u3002
+
 main.opt.depth=\  -depth=<\u6DF1\u5EA6>                 \u6307\u5B9A\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61\u5206\u6790\n                                \u7684\u6DF1\u5EA6
 
 main.opt.q=\  -q       -quiet               \u5728 --generate-module-info \u8F93\u51FA\u4E2D\n                                \u4E0D\u663E\u793A\u7F3A\u5C11\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
 
 main.opt.multi-release=\  --multi-release <\u7248\u672C>        \u6307\u5B9A\u5904\u7406\u591A\u53D1\u884C\u7248 jar \u6587\u4EF6\u65F6\u7684\n                                \u7248\u672C\u3002<\u7248\u672C> \u5E94\u4E3A\u5927\u4E8E\u7B49\u4E8E 9 \n                                \u7684\u6574\u6570\u6216\u57FA\u6570\u3002
 
+err.command.set=\u6307\u5B9A\u4E86 {0} \u548C {1} \u9009\u9879\u3002
 err.unknown.option=\u672A\u77E5\u9009\u9879: {0}
 err.missing.arg=\u6CA1\u6709\u4E3A{0}\u6307\u5B9A\u503C
+err.missing.dependences=\u7F3A\u5C11\u88AB\u4F9D\u8D56\u5BF9\u8C61
 err.invalid.arg.for.option=\u9009\u9879\u7684\u53C2\u6570\u65E0\u6548: {0}
 err.option.after.class=\u5FC5\u987B\u5728\u7C7B\u4E4B\u524D\u6307\u5B9A\u9009\u9879: {0}
 err.genmoduleinfo.not.jarfile={0} \u662F\u65E0\u6CD5\u4F7F\u7528 --generate-module-info \u9009\u9879\u6307\u5B9A\u7684\u6A21\u5757\u5316 JAR \u6587\u4EF6
@@ -68,11 +76,11 @@
 err.profiles.msg=\u6CA1\u6709\u914D\u7F6E\u6587\u4EF6\u4FE1\u606F
 err.exception.message={0}
 err.invalid.path=\u65E0\u6548\u8DEF\u5F84: {0}
-err.invalid.module.option=\u65E0\u6CD5\u4F7F\u7528 {1} \u9009\u9879\u8BBE\u7F6E {0}\u3002
-err.invalid.filters=\u53EA\u80FD\u8BBE\u7F6E --package (-p), --regex (-e), --require \u9009\u9879\u4E2D\u7684\u4E00\u4E2A
+err.invalid.options={0} \u4E0D\u80FD\u4E0E {1} \u9009\u9879\u4E00\u8D77\u4F7F\u7528
 err.module.not.found=\u627E\u4E0D\u5230\u6A21\u5757: {0}
 err.root.module.not.set=\u6839\u6A21\u5757\u96C6\u4E3A\u7A7A
-err.invalid.inverse.option={0} \u4E0D\u80FD\u4E0E --inverse \u9009\u9879\u4E00\u8D77\u4F7F\u7528
+err.option.already.specified=\u591A\u6B21\u6307\u5B9A\u4E86 {0} \u9009\u9879\u3002
+err.filter.not.specified=\u5FC5\u987B\u6307\u5B9A --package (-p), --regex (-e), --require \u9009\u9879
 err.multirelease.option.exists={0} \u4E0D\u662F\u591A\u53D1\u884C\u7248 jar \u6587\u4EF6, \u4F46\u8BBE\u7F6E\u4E86 --multi-release \u9009\u9879
 err.multirelease.option.notfound={0} \u662F\u591A\u53D1\u884C\u7248 jar \u6587\u4EF6, \u4F46\u672A\u8BBE\u7F6E --multi-release \u9009\u9879
 err.multirelease.version.associated=\u7C7B {0} \u5DF2\u4E0E\u7248\u672C {1} \u5173\u8054, \u6B63\u5728\u5C1D\u8BD5\u6DFB\u52A0\u7248\u672C {2}
@@ -82,5 +90,10 @@
 warn.split.package=\u5DF2\u5728{1} {2}\u4E2D\u5B9A\u4E49\u7A0B\u5E8F\u5305{0}
 warn.replace.useJDKInternals=\u4E0D\u652F\u6301 JDK \u5185\u90E8 API, \u5B83\u4EEC\u4E13\u7528\u4E8E\u901A\u8FC7\u4E0D\u517C\u5BB9\u65B9\u5F0F\u6765\n\u5220\u9664\u6216\u66F4\u6539\u7684 JDK \u5B9E\u73B0, \u53EF\u80FD\u4F1A\u635F\u574F\u60A8\u7684\u5E94\u7528\u7A0B\u5E8F\u3002\n\u8BF7\u4FEE\u6539\u60A8\u7684\u4EE3\u7801, \u6D88\u9664\u4E0E\u4EFB\u4F55 JDK \u5185\u90E8 API \u7684\u76F8\u5173\u6027\u3002\n\u6709\u5173 JDK \u5185\u90E8 API \u66FF\u6362\u7684\u6700\u65B0\u66F4\u65B0, \u8BF7\u67E5\u770B:\n{0}
 
+split.package=\u62C6\u5206\u7A0B\u5E8F\u5305: {0} {1}\n
+inverse.transitive.dependencies.on={0} \u7684\u9006\u5411\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61
+inverse.transitive.dependencies.matching=\u4E0E {0} \u5339\u914D\u7684\u9006\u5411\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61
+internal.api.column.header=JDK \u5185\u90E8 API
+public.api.replacement.column.header=\u5EFA\u8BAE\u7684\u66FF\u6362
 artifact.not.found=\u627E\u4E0D\u5230
 jdeps.wiki.url=https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_ja.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_ja.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,11 @@
 # questions.
 #
 
-jshell.msg.welcome =JShell\u3078\u3088\u3046\u3053\u305D -- \u30D0\u30FC\u30B8\u30E7\u30F3{0}\n\u6982\u8981\u306B\u3064\u3044\u3066\u306F\u3001\u6B21\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: /help intro\n
+jshell.msg.welcome =JShell\u3078\u3088\u3046\u3053\u305D -- \u30D0\u30FC\u30B8\u30E7\u30F3{0}\n\u6982\u8981\u306B\u3064\u3044\u3066\u306F\u3001\u6B21\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: /help intro
 jshell.err.opt.arg = {0}\u3078\u306E\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093\u3002
 jshell.err.opt.invalid = \u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}\u3002
 jshell.err.opt.one = {0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306F1\u3064\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
-jshell.err.opt.startup.one = --startup\u307E\u305F\u306F--no-startup\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
+jshell.err.opt.startup.conflict = \u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u7AF6\u5408: --startup\u3068--no-startup\u306E\u4E21\u65B9\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002
 jshell.err.opt.feedback.one = \u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3(--feedback\u3001-q\u3001-s\u307E\u305F\u306F-v)\u306F1\u3064\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
 jshell.err.opt.unknown = \u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
 
@@ -48,12 +48,15 @@
 
 jshell.err.no.such.command.or.snippet.id = \u6307\u5B9A\u3055\u308C\u305F\u30B3\u30DE\u30F3\u30C9\u307E\u305F\u306F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306F\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
 jshell.err.command.ambiguous = \u30B3\u30DE\u30F3\u30C9: ''{0}''\u306F\u3042\u3044\u307E\u3044\u3067\u3059: {1}
+jshell.msg.set.restore = \u65B0\u3057\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u8A2D\u5B9A\u3068\u72B6\u614B\u306E\u5FA9\u5143\u3002
 jshell.msg.set.editor.set = \u30A8\u30C7\u30A3\u30BF\u306F\u6B21\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059: {0}
 jshell.msg.set.editor.retain = \u30A8\u30C7\u30A3\u30BF\u8A2D\u5B9A\u304C\u4FDD\u6301\u3055\u308C\u3066\u3044\u307E\u3059: {0}
-jshell.err.cant.launch.editor = \u30A8\u30C7\u30A3\u30BF\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093 -- \u4E88\u671F\u3057\u306A\u3044\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}
-jshell.msg.try.set.editor = \u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u3092\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001/set editor\u3092\u5B9F\u884C\u3057\u3066\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+jshell.err.no.builtin.editor = \u7D44\u8FBC\u307F\u30A8\u30C7\u30A3\u30BF\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+jshell.err.cant.launch.editor = \u7D44\u8FBC\u307F\u30A8\u30C7\u30A3\u30BF\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093 -- \u4E88\u671F\u3057\u306A\u3044\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}
+jshell.msg.try.set.editor = \u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u3092\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001''/help /set editor''\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
 jshell.msg.press.return.to.leave.edit.mode = \u300C\u623B\u308B\u300D\u3092\u62BC\u3059\u3068\u7DE8\u96C6\u30E2\u30FC\u30C9\u304C\u7D42\u4E86\u3057\u307E\u3059\u3002
 jshell.err.wait.applies.to.external.editor = -wait\u306F\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u306B\u9069\u7528\u3055\u308C\u307E\u3059
+jshell.label.editpad = Shell Edit Pad
 
 jshell.err.setting.to.retain.must.be.specified = \u4FDD\u6301\u3059\u308B\u8A2D\u5B9A\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -- {0}
 jshell.msg.set.show.mode.settings = \n\u30E2\u30FC\u30C9\u8A2D\u5B9A\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3001''/set prompt''\u3001''/set truncation'' ...\u3092\u4F7F\u7528\u3059\u308B\u304B\u3001\n''/set mode''\u306E\u5F8C\u306B\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u540D\u3092\u7D9A\u3051\u3066\u4F7F\u7528\u3057\u307E\u3059\u3002
@@ -84,7 +87,7 @@
 
 jshell.err.help.arg = \u6307\u5B9A\u3057\u305F\u5F15\u6570\u3067\u59CB\u307E\u308B\u30B3\u30DE\u30F3\u30C9\u307E\u305F\u306F\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3042\u308A\u307E\u305B\u3093: {0}
 jshell.msg.help.begin =Java\u8A00\u8A9E\u306E\u5F0F\u3001\u6587\u307E\u305F\u306F\u5BA3\u8A00\u3092\u5165\u529B\u3057\u307E\u3059\u3002\n\u307E\u305F\u306F\u3001\u6B21\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u3044\u305A\u308C\u304B\u3092\u5165\u529B\u3057\u307E\u3059:\n
-jshell.msg.help.subject =\n\u8A73\u7D30\u306F\u3001''/help''\u306E\u5F8C\u306B\u30B3\u30DE\u30F3\u30C9\u307E\u305F\u306F\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u540D\u524D\u3092\u7D9A\u3051\u3066\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u305F\u3068\u3048\u3070\u3001''/help /list''\u307E\u305F\u306F''/help intro''\u306A\u3069\u3067\u3059\u3002\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8:\n
+jshell.msg.help.subject =\n\u8A73\u7D30\u306F\u3001''/help''\u306E\u5F8C\u306B\u30B3\u30DE\u30F3\u30C9\u307E\u305F\u306F\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u540D\u524D\u3092\u7D9A\u3051\u3066\n\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u305F\u3068\u3048\u3070\u3001''/help /list''\u307E\u305F\u306F''/help intro''\u306A\u3069\u3067\u3059\u3002\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8:\n
 
 jshell.err.drop.arg =/drop\u5F15\u6570\u306B\u306F\u3001\u524A\u9664\u3059\u308B\u30A4\u30F3\u30DD\u30FC\u30C8\u3001\u5909\u6570\u3001\u30E1\u30BD\u30C3\u30C9\u307E\u305F\u306F\u30AF\u30E9\u30B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\nID\u307E\u305F\u306F\u540D\u524D\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002ID\u3092\u53C2\u7167\u3059\u308B\u306B\u306F/list\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u3059\u3079\u3066\u306E\u72B6\u614B\u3092\u30EA\u30BB\u30C3\u30C8\u3059\u308B\u306B\u306F/reset\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002
 jshell.err.drop.ambiguous = \u5F15\u6570\u304C\u3001\u8907\u6570\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u3001\u5909\u6570\u3001\u30E1\u30BD\u30C3\u30C9\u307E\u305F\u306F\u30AF\u30E9\u30B9\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002
@@ -133,6 +136,11 @@
 jshell.err.retained.mode.failure = \u4FDD\u6301\u3055\u308C\u305F\u30E2\u30FC\u30C9\u3067\u5931\u6557\u3057\u307E\u3057\u305F(\u30E2\u30FC\u30C9\u306F\u30AF\u30EA\u30A2\u3055\u308C\u307E\u3057\u305F) -- {0} {1}
 
 jshell.console.see.more = <\u8A73\u7D30\u306F\u3001\u30BF\u30D6\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044>
+jshell.console.see.javadoc = <javadoc\u3092\u53C2\u7167\u3059\u308B\u306B\u306F[Shift]-[Tab]\u3092\u3082\u3046\u4E00\u5EA6\u62BC\u3057\u307E\u3059>
+jshell.console.see.help = <\u8A73\u7D30\u30D8\u30EB\u30D7\u3092\u53C2\u7167\u3059\u308B\u306B\u306F[Shift]-[Tab]\u3092\u3082\u3046\u4E00\u5EA6\u62BC\u3057\u307E\u3059>
+jshell.console.see.next.page = <\u6B21\u306E\u30DA\u30FC\u30B8\u306B\u9032\u3080\u306B\u306F\u30B9\u30DA\u30FC\u30B9\u3092\u3001\u7D42\u4E86\u3059\u308B\u306B\u306FQ\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044>
+jshell.console.see.next.javadoc = <\u6B21\u306Ejavadoc\u306B\u9032\u3080\u306B\u306F\u30B9\u30DA\u30FC\u30B9\u3092\u3001\u7D42\u4E86\u3059\u308B\u306B\u306FQ\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044>
+jshell.console.no.javadoc = <Javadoc\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093>
 jshell.console.do.nothing = \u4F55\u3082\u3057\u306A\u3044
 jshell.console.choice = \u9078\u629E: 
 jshell.console.create.variable = \u5909\u6570\u306E\u4F5C\u6210
@@ -142,7 +150,7 @@
 
 
 help.usage = \u4F7F\u7528\u65B9\u6CD5:   jshell <options> <load files>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059:\n    --class-path <path>   \u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3057\u307E\u3059\n    --module-path <path>  \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3057\u307E\u3059\n    --add-modules <module>(,<module>)*\n                          \u89E3\u6C7A\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u3001\u307E\u305F\u306F<module>\u304CALL-MODULE-PATH\n                           \u3067\u3042\u308B\u5834\u5408\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u306E\u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u6307\u5B9A\u3057\u307E\u3059\n    --startup <file>      \u8D77\u52D5\u5B9A\u7FA9\u306E\u4EE3\u66FF\u3068\u3057\u3066\u5B9F\u884C\u3055\u308C\u307E\u3059\n    --no-startup          \u8D77\u52D5\u5B9A\u7FA9\u3092\u5B9F\u884C\u3057\u307E\u305B\u3093\n    --feedback <mode>     \u521D\u671F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u30E2\u30FC\u30C9\u306F\n                           \u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B(silent\u3001concise\u3001normal\u307E\u305F\u306Fverbose)\u304B\u3001\n                           \u4E8B\u524D\u306B\u30E6\u30FC\u30B6\u30FC\u304C\u5B9A\u7FA9\u3067\u304D\u307E\u3059\n    -q                    \u7C21\u6F54\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback concise\u3068\u540C\u3058\n    -s                    \u975E\u5E38\u306B\u7C21\u6F54\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback silent\u3068\u540C\u3058\n    -v                    \u8A73\u7D30\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback verbose\u3068\u540C\u3058\n    -J<flag>              <flag>\u3092\u5B9F\u884C\u6642\u30B7\u30B9\u30C6\u30E0\u306B\u76F4\u63A5\u6E21\u3057\u307E\u3059\u3002\n                            \u5B9F\u884C\u6642\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-J\u3092\u4F7F\u7528\u3057\u307E\u3059\n    -R<flag>              <flag>\u3092\u30EA\u30E2\u30FC\u30C8\u5B9F\u884C\u6642\u30B7\u30B9\u30C6\u30E0\u306B\u6E21\u3057\u307E\u3059\u3002\n                            \u30EA\u30E2\u30FC\u30C8\u30FB\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-R\u3092\u4F7F\u7528\u3057\u307E\u3059\n    -C<flag>              <flag>\u3092\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u6E21\u3057\u307E\u3059\u3002\n                            \u30B3\u30F3\u30D1\u30A4\u30E9\u30FB\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-C\u3092\u4F7F\u7528\u3057\u307E\u3059\n    --help                \u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6982\u8981\u3092\u51FA\u529B\u3057\u307E\u3059\n    --version             \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\n    -X                    \u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u95A2\u3059\u308B\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3057\u307E\u3059\n
-help.usage.x = \    --add-exports <module>/<package>   \u6307\u5B9A\u3057\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u56FA\u6709\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\n    \n\u3053\u308C\u3089\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n
+help.usage.x = \    --add-exports <module>/<package>   \u6307\u5B9A\u3057\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u56FA\u6709\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\n    ---execution <spec>                 \u4EE3\u66FF\u5B9F\u884C\u30A8\u30F3\u30B8\u30F3\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n                                         \u3053\u3053\u3067\u3001<spec>\u306FExecutionControl spec\u3067\u3059\u3002\n                                         spec\u306E\u69CB\u6587\u306B\u3064\u3044\u3066\u306F\u3001\u30D1\u30C3\u30B1\u30FC\u30B8jdk.jshell.spi\u306E\n                                         \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n    \n\u3053\u308C\u3089\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n
 
 help.list.summary = \u5165\u529B\u3057\u305F\u30BD\u30FC\u30B9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
 help.list.args = [<name or id>|-all|-start]
@@ -185,16 +193,16 @@
 help.exit =jshell\u30C4\u30FC\u30EB\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002\u4F5C\u696D\u306F\u4FDD\u5B58\u3055\u308C\u307E\u305B\u3093\u3002\n\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u3059\u3079\u3066\u306E\u4F5C\u696D\u3092\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044
 
 help.reset.summary = reset jshell
-help.reset.args =
-help.reset =jshell\u30C4\u30FC\u30EB\u30FB\u30B3\u30FC\u30C9\u304A\u3088\u3073\u5B9F\u884C\u72B6\u614B\u3092\u30EA\u30BB\u30C3\u30C8\u3057\u307E\u3059:\n\t* \u5165\u529B\u3057\u305F\u3059\u3079\u3066\u306E\u30B3\u30FC\u30C9\u304C\u5931\u308F\u308C\u307E\u3059\u3002\n\t* \u8D77\u52D5\u30B3\u30FC\u30C9\u304C\u518D\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\n\t* \u5B9F\u884C\u72B6\u614B\u306F\u518D\u5EA6\u958B\u59CB\u3055\u308C\u307E\u3059\u3002\n\t* \u30AF\u30E9\u30B9\u30D1\u30B9\u306F\u30AF\u30EA\u30A2\u3055\u308C\u307E\u3059\u3002\n\u30C4\u30FC\u30EB\u8A2D\u5B9A\u306F\u6B21\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u3088\u3046\u306B\u4FDD\u6301\u3055\u308C\u307E\u3059: /set ...\n\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u3059\u3079\u3066\u306E\u4F5C\u696D\u3092\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044
+help.reset.args = [-class-path <path>] [-module-path <path>] [-add-modules <modules>]...
+help.reset =jshell\u30C4\u30FC\u30EB\u30FB\u30B3\u30FC\u30C9\u304A\u3088\u3073\u5B9F\u884C\u72B6\u614B\u3092\u30EA\u30BB\u30C3\u30C8\u3057\u307E\u3059:\n\t* \u5165\u529B\u3057\u305F\u3059\u3079\u3066\u306E\u30B3\u30FC\u30C9\u304C\u5931\u308F\u308C\u307E\u3059\u3002\n\t* \u8D77\u52D5\u30B3\u30FC\u30C9\u304C\u518D\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\n\t* \u5B9F\u884C\u72B6\u614B\u306F\u518D\u5EA6\u958B\u59CB\u3055\u308C\u307E\u3059\u3002\n\t\u30C4\u30FC\u30EB\u8A2D\u5B9A\u306F\u6B21\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u3088\u3046\u306B\u4FDD\u6301\u3055\u308C\u307E\u3059: /set ...\n\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u3059\u3079\u3066\u306E\u4F5C\u696D\u3092\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044\n/reset\u30B3\u30DE\u30F3\u30C9\u306F\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u53D7\u3051\u5165\u308C\u307E\u3059\u3002\u6B21\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044:\n\n\t/help context\n
 
 help.reload.summary = \u30EA\u30BB\u30C3\u30C8\u3057\u3066\u95A2\u9023\u3059\u308B\u5C65\u6B74\u3092\u30EA\u30D7\u30EC\u30A4\u3057\u307E\u3059 -- \u73FE\u5728\u307E\u305F\u306F\u4EE5\u524D(-restore)
-help.reload.args = [-restore] [-quiet]
-help.reload =jshell\u30C4\u30FC\u30EB\u30FB\u30B3\u30FC\u30C9\u304A\u3088\u3073\u5B9F\u884C\u72B6\u614B\u3092\u30EA\u30BB\u30C3\u30C8\u3057\u3001\u5404\u6709\u52B9\u30B9\u30CB\u30DA\u30C3\u30C8\n\u304A\u3088\u3073\u4EFB\u610F\u306E/drop\u307E\u305F\u306F/classpath\u30B3\u30DE\u30F3\u30C9\u3092\u5165\u529B\u3055\u308C\u305F\u9806\u756A\u3067\u30EA\u30D7\u30EC\u30A4\u3057\u307E\u3059\u3002\n\n/reload\n\t\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001jshell\u304C\u5165\u529B\u3055\u308C\u305F\u3001\u3042\u308B\u3044\u306F/reset\u307E\u305F\u306F\n\t/reload\u30B3\u30DE\u30F3\u30C9\u304C\u5B9F\u884C\u3055\u308C\u305F(\u6700\u65B0\u306E\u3044\u305A\u308C\u304B)\u4EE5\u964D\u306E\u6709\u52B9\u306A\u5C65\u6B74\u304C\n\t\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\n\n/reload -restore\n\t\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001jshell\u304C\u5165\u529B\u3055\u308C\u305F\u3001\u3042\u308B\u3044\u306F/reset\u307E\u305F\u306F/reload\u30B3\u30DE\u30F3\u30C9\u304C\n\t\u5B9F\u884C\u3055\u308C\u305F\u4EE5\u524D\u3068\u6700\u65B0\u306E\u6642\u9593\u306E\u9593\u306E\u6709\u52B9\u306A\u5C65\u6B74\u304C\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\n\t\u305D\u306E\u305F\u3081\u3001\u3053\u308C\u306F\u4EE5\u524D\u306Ejshell\u30C4\u30FC\u30EB\u30FB\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u5FA9\u5143\u306B\n\t\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n/reload [-restore] -quiet\n\t'-quiet'\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30EA\u30D7\u30EC\u30A4\u304C\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002\u30A8\u30E9\u30FC\u306F\u8868\u793A\u3055\u308C\u307E\u3059\u3002
+help.reload.args = [-restore] [-quiet] [-class-path <path>] [-module-path <path>]...
+help.reload =jshell\u30C4\u30FC\u30EB\u30FB\u30B3\u30FC\u30C9\u304A\u3088\u3073\u5B9F\u884C\u72B6\u614B\u3092\u30EA\u30BB\u30C3\u30C8\u3057\u3001\u5404\u6709\u52B9\u30B9\u30CB\u30DA\u30C3\u30C8\n\u304A\u3088\u3073\u4EFB\u610F\u306E/drop\u30B3\u30DE\u30F3\u30C9\u3092\u5165\u529B\u3055\u308C\u305F\u9806\u756A\u3067\u30EA\u30D7\u30EC\u30A4\u3057\u307E\u3059\u3002\n\n/reload\n\t\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001jshell\u304C\u5165\u529B\u3055\u308C\u305F\u3001\u3042\u308B\u3044\u306F/reset\u307E\u305F\u306F\n\t/reload\u30B3\u30DE\u30F3\u30C9\u304C\u5B9F\u884C\u3055\u308C\u305F(\u6700\u65B0\u306E\u3044\u305A\u308C\u304B)\u4EE5\u964D\u306E\u6709\u52B9\u306A\u5C65\u6B74\u304C\n\t\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\n\n/reload -restore\n\t\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001jshell\u304C\u5165\u529B\u3055\u308C\u305F\u3001\u3042\u308B\u3044\u306F/reset\u307E\u305F\u306F/reload\u30B3\u30DE\u30F3\u30C9\u304C\n\t\u5B9F\u884C\u3055\u308C\u305F\u4EE5\u524D\u3068\u6700\u65B0\u306E\u6642\u9593\u306E\u9593\u306E\u6709\u52B9\u306A\u5C65\u6B74\u304C\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\n\t\u305D\u306E\u305F\u3081\u3001\u3053\u308C\u306F\u4EE5\u524D\u306Ejshell\u30C4\u30FC\u30EB\u30FB\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u5FA9\u5143\u306B\n\t\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n/reload [-restore] -quiet\n\t'-quiet'\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30EA\u30D7\u30EC\u30A4\u304C\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002\u30A8\u30E9\u30FC\u306F\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\n\u4E0A\u306E\u5404\u3005\u306F\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u53D7\u3051\u5165\u308C\u307E\u3059\u3002\u6B21\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044:\n\n\t/help context\n\n\u4F8B:\n\n\t/reload -add-modules com.greetings -restore
 
-help.classpath.summary = \u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u30D1\u30B9\u3092\u8FFD\u52A0\u3057\u307E\u3059
-help.classpath.args = <path>
-help.classpath =\u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u30D1\u30B9\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002
+help.env.summary = \u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u8868\u793A\u307E\u305F\u306F\u5909\u66F4\u3057\u307E\u3059
+help.env.args = [-class-path <path>] [-module-path <path>] [-add-modules <modules>] ...
+help.env =\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u8868\u793A\u307E\u305F\u306F\u5909\u66F4\u3057\u307E\u3059\u3002\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306F\u3001\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u3001\n\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u306A\u3069\u3067\u3059\u3002\n/env\n\t\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u793A\u3057\u307E\u3059\u3002\n\n/env [-class-path <path>] [-module-path <path>] [-add-modules <modules>] ...\n\t1\u3064\u4EE5\u4E0A\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306B\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\n\t\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u5B9F\u884C\u72B6\u614B\u306F\u65B0\u3057\u3044\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001\n\t\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\u305F\u3060\u3057\u30EA\u30D7\u30EC\u30A4\u306F\u8868\u793A\u3055\u308C\u305A\u3001\n\t\u30A8\u30E9\u30FC\u306F\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u3053\u308C\u306F\u6B21\u3068\u540C\u3058\u3067\u3059: /reload -quiet\n\t\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u8A73\u7D30\u306F\u3001\u6B21\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044:\n\n\t\t/help context\n\n\t\u4F8B:\n\n\t\t/env -add-modules com.greetings
 
 help.history.summary = \u5165\u529B\u3057\u305F\u5185\u5BB9\u306E\u5C65\u6B74
 help.history.args =
@@ -234,6 +242,8 @@
 help.shortcuts.summary = \u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u306E\u8AAC\u660E
 help.shortcuts =\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\n<tab>\n\t\tJava\u8B58\u5225\u5B50\u3001jshell\u30B3\u30DE\u30F3\u30C9\u3001\u5834\u5408\u306B\u3088\u3063\u3066\u306F\n\t\tjshell\u30B3\u30DE\u30F3\u30C9\u5F15\u6570\u306E\u6700\u521D\u306E\u6570\u6587\u5B57\u3092\u5165\u529B\u3057\u305F\u5F8C\u306B\u3001\n\t\t<tab>\u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\u5165\u529B\u304C\u5B8C\u6210\u3057\u307E\u3059\u3002\n\t\t\u5B8C\u6210\u7D50\u679C\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u5B8C\u6210\u7D50\u679C\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\nShift-<tab>\n\t\t\u30E1\u30BD\u30C3\u30C9\u307E\u305F\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u547C\u51FA\u3057\u306E\u540D\u524D\u3068\u5DE6\u4E38\u30AB\u30C3\u30B3\u306E\u5F8C\u306B\n\t\t<shift>\u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089<tab>\u3092\u62BC\u3059\u3068\u3001\u4E00\u81F4\u3059\u308B\u3059\u3079\u3066\u306E\u30E1\u30BD\u30C3\u30C9/\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\n\t\t\u30B7\u30CE\u30D7\u30B7\u30B9\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\n<fix-shortcut> v\n\t\t\u5B8C\u5168\u306A\u5F0F\u306E\u5F8C\u306B\u3001\u300C<fix-shortcut> v\u300D\u3092\u62BC\u3059\u3068\u3001\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\u57FA\u3065\u3044\u305F\u30BF\u30A4\u30D7\u306E\n\t\t\u65B0\u3057\u3044\u5909\u6570\u304C\u5C0E\u5165\u3055\u308C\u307E\u3059\u3002\n\t\t\u300C<fix-shortcut>\u300D\u306F[Alt]+[F1]\u307E\u305F\u306F[Alt]+[Enter]\u3067\u3001\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306B\u3088\u3063\u3066\u7570\u306A\u308A\u307E\u3059\u3002\n\n<fix-shortcut> i\n\t\t\u89E3\u6C7A\u3067\u304D\u306A\u3044\u8B58\u5225\u5B50\u306E\u5F8C\u306B\u3001\u300C<fix-shortcut> i\u300D\u3092\u62BC\u3059\u3068\u3001jshell\u306F\u6307\u5B9A\u3057\u305F\n\t\t\u30AF\u30E9\u30B9\u30D1\u30B9\u306E\u5185\u5BB9\u306B\u57FA\u3065\u3044\u3066\u4F7F\u7528\u53EF\u80FD\u306A\u5B8C\u5168\u4FEE\u98FE\u3055\u308C\u305F\u540D\u524D\u3092\u63D0\u793A\u3057\u307E\u3059\u3002\n\t\t\u300C<fix-shortcut>\u300D\u306F[Alt]+[F1]\u307E\u305F\u306F[Alt]+[Enter]\u3067\u3001\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306B\u3088\u3063\u3066\u7570\u306A\u308A\u307E\u3059\u3002
 
+help.context.summary = /env /reload\u304A\u3088\u3073/reset\u306E\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3
+help.context =\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u69CB\u6210\u3057\u307E\u3059\u3002\u3053\u308C\u3089\u306F\u3001jshell\u8D77\u52D5\u6642\u306B\n\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u3001\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9/env\u3001/reload\u307E\u305F\u306F/reset\u3067\u518D\u8D77\u52D5\u3059\u308B\n\u3053\u3068\u306B\u3088\u308A\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\t--class-path <class search path of directories and zip/jar files>\n\t\t\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\n\t\tJAR\u30A2\u30FC\u30AB\u30A4\u30D6\u3001ZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u30EA\u30B9\u30C8\u3002\n\t\t\u30EA\u30B9\u30C8\u306F\u30D1\u30B9\u533A\u5207\u308A\u6587\u5B57\u3067\u533A\u5207\u308A\u307E\u3059\n\t\t(UNIX/Linux/Mac\u3067\u306F\u300C:\u300D\u3001Windows\u3067\u306F\u300C;\u300D)\u3002\n\t--module-path <module path>...\n\t\t\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EA\u30B9\u30C8\u3002\u5404\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\n\t\t\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\u3002\n\t\t\u30EA\u30B9\u30C8\u306F\u30D1\u30B9\u533A\u5207\u308A\u6587\u5B57\u3067\u533A\u5207\u308A\u307E\u3059\n\t\t(UNIX/Linux/Mac\u3067\u306F\u300C:\u300D\u3001Windows\u3067\u306F\u300C;\u300D)\u3002\n\t--add-modules <modulename>[,<modulename>...]\n\t\t\u521D\u671F\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u52A0\u3048\u3066\u89E3\u6C7A\u3059\u308B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\n\t\t<modulename>\u306B\u306F\u3001ALL-DEFAULT\u3001ALL-SYSTEM\u3001\n\t\tALL-MODULE-PATH\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\t--add-exports <module>/<package>=<target-module>(,<target-module>)*\n\t\t\u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001<module>\u3092\u66F4\u65B0\u3057\u3066\n\t\t<package>\u3092<target-module>\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\t\t<target-module>\u3092ALL-UNNAMED\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u3059\u3079\u3066\u306E\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\n\t\t\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002jshell\u3067\u306F\u3001<target-module>\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408(\u300C=\u300D\u306A\u3057)\u3001\n\t\tALL-UNNAMED\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u306F\u3001\u3053\u308C\u3089\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F2\u3064\u306E\u30C0\u30C3\u30B7\u30E5\u304C\u5FC5\u8981\u3067\u3059\u3002\u4F8B: --module-path\njshell\u30B3\u30DE\u30F3\u30C9\u3067\u306F\u3001\u30C0\u30C3\u30B7\u30E5\u306F1\u3064\u3067\u30822\u3064\u3067\u3082\u304B\u307E\u3044\u307E\u305B\u3093\u3002\u4F8B: -module-path\n
 help.set._retain = '-retain'\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u3088\u308A\u3001\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u4F7F\u7528\u3059\u308B\u305F\u3081\u306B\u8A2D\u5B9A\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002\n-retain\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001/set\u306E\u6B21\u306E\u5F62\u5F0F\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059:\n\n\t/set editor -retain\n\t/set start -retain\n\t/set feedback -retain\n\t/set mode -retain\n\n\u8A73\u7D30\u306F\u3001\u3053\u308C\u3089\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044 -- \u4F8B: /help /set editor
 
 help.set.format = \u30B9\u30CB\u30DA\u30C3\u30C8\u30FB\u30A4\u30D9\u30F3\u30C8\u3092\u30EC\u30DD\u30FC\u30C8\u3059\u308B\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059:\n\n\t/set format <mode> <field> "<format>" <selector>...\n\n\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set format [<mode> [<field>]]\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059 -- '/help /set mode'\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n<field>\u306F\u5B9A\u7FA9\u3059\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u56FA\u6709\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u540D\u524D\u3067\u3059\u3002\n<format>\u306F\u5F15\u7528\u7B26\u306B\u56F2\u307E\u308C\u305F\u6587\u5B57\u5217\u3067\u3001\u6B21\u306E\u5834\u5408\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024\u3067\u3059: \n\u30BB\u30EC\u30AF\u30BF\u304C\u4E00\u81F4\u3059\u308B(\u307E\u305F\u306F\u30BB\u30EC\u30AF\u30BF\u304C\u306A\u3044)\u3002\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304C\u4F7F\u7528\u3055\u308C\u308B\u5834\u5408\u3001\n\u4E2D\u30AB\u30C3\u30B3\u3067\u56F2\u307E\u308C\u3066\u3044\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u304C\u305D\u306E\u3068\u304D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024\u3067\u7F6E\u63DB\u3055\u308C\u307E\u3059\n\u3053\u308C\u3089\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u3067\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3082\u3001\n\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u56FA\u6709\u306E\u3053\u308C\u3089\u306E\u4E8B\u524D\u5B9A\u7FA9\u6E08\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5834\u5408\u3082\u3042\u308A\u307E\u3059:\n\t{name}       == \u540D\u524D\u3001\u4F8B: \u5909\u6570\u540D\u3001 ...\n\t{type}       == \u30BF\u30A4\u30D7\u540D\u3002\u5909\u6570\u307E\u305F\u306F\u5F0F\u306E\u30BF\u30A4\u30D7\u3001\n\t\t\t\u30E1\u30BD\u30C3\u30C9\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\n\t{value}      == \u5F0F\u307E\u305F\u306F\u5909\u6570\u306E\u521D\u671F\u5316\u306E\u7D50\u679C\u5024\n\t{unresolved} == \u672A\u89E3\u6C7A\u306E\u53C2\u7167\u306E\u30EA\u30B9\u30C8\n\t{errors}     == \u30EA\u30AB\u30D0\u30EA\u53EF\u80FD\u306A\u30A8\u30E9\u30FC\u306E\u30EA\u30B9\u30C8(\u51E6\u7406\u6642-\n\t\t\t"display"\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u307F)\n\t{err}        == \u672A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30FB\u30A8\u30E9\u30FC\u884C(\u51E6\u7406\u6642-\n\t\t\t"errorline"\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u307F)\n\u6B21\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30C4\u30FC\u30EB\u306B\u3088\u3063\u3066\u30A2\u30AF\u30BB\u30B9\u3055\u308C\u3001\u8868\u793A\u3055\u308C\u308B\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u6C7A\u5B9A\u3057\u307E\u3059:\n\t{display}    == \u30B9\u30CB\u30DA\u30C3\u30C8\u30FB\u30A4\u30D9\u30F3\u30C8\u306B\u5BFE\u3057\u3066\u8868\u793A\u3055\u308C\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\n\t{errorline}  == \u300Cerrors\u300D\u30D5\u30A3\u30FC\u30EB\u30C9\u5185\u306E\u30A8\u30E9\u30FC\u884C\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\n\t{pre}        == \u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u63A5\u982D\u8F9E(\u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u958B\u59CB\u3059\u308B)\n\t{post}       == \u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u63A5\u5C3E\u8F9E(\u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u7D42\u4E86\u3059\u308B)\n\t{errorpre}   == \u30A8\u30E9\u30FC\u63A5\u982D\u8F9E(\u30A8\u30E9\u30FC\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u958B\u59CB\u3059\u308B)\n\t{errorpost}  == \
@@ -247,7 +257,7 @@
 
 help.set.mode = \u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u65E2\u5B58\u306E\u30E2\u30FC\u30C9\u304B\u3089\u30B3\u30D4\u30FC\u3057\u307E\u3059:\n\n\t/set mode <mode> [<old-mode>] [-command|-quiet|-delete]\n\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u305F\u3081\u306B\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u4FDD\u6301\u3057\u307E\u3059:\n\n\t/set mode -retain <mode>\n\n\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059:\n\n\t/set mode -delete [-retain] <mode>\n\n\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set mode [<mode>]\n\n<new-mode>\u306F\u4F5C\u6210\u3059\u308B\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<old-mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<old-mode>\u304C\u3042\u308B\u5834\u5408\u3001\u305D\u306E\u8A2D\u5B9A\u304C\u65B0\u898F\u30E2\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3055\u308C\u307E\u3059\u3002\n'-command'\u307E\u305F\u306F'-quiet'\u306B\u3088\u308A\u3001\u60C5\u5831/\u691C\u8A3C\u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u304C\u6C7A\u5B9A\u3057\u307E\u3059\u3002\n\n\u65B0\u898F\u30E2\u30FC\u30C9\u3092\u4F5C\u6210\u3057\u305F\u3089\u3001'/set format'\u3001'/set prompt'\u304A\u3088\u3073'/set truncation'\u3092\u4F7F\u7528\u3057\u3066\n\u69CB\u6210\u3057\u307E\u3059\u3002\u65B0\u898F\u30E2\u30FC\u30C9\u3092\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001'/set feedback'\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n-retain\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30E2\u30FC\u30C9(\u305D\u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u542B\u3080)\u306F\u3001\njshell\u30C4\u30FC\u30EB\u306E\u3053\u306E\u5B9F\u884C\u3068\u5C06\u6765\u306E\u5B9F\u884C\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n-retain\u3068-delete\u306E\u4E21\u65B9\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30E2\u30FC\u30C9\u306F\u73FE\u5728\u304A\u3088\u3073\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u304B\u3089\n\u524A\u9664\u3055\u308C\u307E\u3059\u3002\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u30E2\u30FC\u30C9\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30E2\u30FC\u30C9\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u6CE8\u610F: \u30E2\u30FC\u30C9\u306E\u8A2D\u5B9A\u306B\u306F\u3001\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u306E\u8A2D\u5B9A\u304C\u542B\u307E\u308C\u308B\u305F\u3081\u3001\n\u3053\u308C\u3089\u3082\u540C\u69D8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set mode myformat\n\u30E2\u30FC\u30C9myformat\u306E\u30E2\u30FC\u30C9\u3001\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\n
 
-help.set.prompt = \u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u6A19\u6E96\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u4E21\u65B9\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059:\n\n\t/set prompt <mode> "<prompt>" "<continuation-prompt>"\n\n\u6A19\u6E96\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set prompt [<mode>]\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<prompt>\u304A\u3088\u3073<continuation-prompt>\u306F\u5165\u529B\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u3057\u3066\u51FA\u529B\u3055\u308C\u308B\u5F15\u7528\u7B26\u3067\u56F2\u307E\u308C\u305F\u6587\u5B57\u5217\u3067\u3059\u3002\n\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3001\u4E21\u65B9\u3068\u3082\u3001\u6B21\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u3067\u7F6E\u304D\u63DB\u3048\u3089\u308C\u308B'%s'\u3092\u542B\u3080\u3053\u3068\u304C\u3067\u304D\u307E\u3059 --\n\u5165\u529B\u3057\u305F\u5185\u5BB9\u304C\u305D\u306EID\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u306A\u3044\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u305F\u3068\u3048\u3070\u3001\u30A8\u30E9\u30FC\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9\u3067\u3042\u308B\u5834\u5408\u306A\u3069\u3067\u3059\u3002\n\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u306F\u8907\u6570\u884C\u30B9\u30CB\u30DA\u30C3\u30C8\u306E2\u884C\u76EE\u4EE5\u964D\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<prompt>\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u73FE\u5728\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set prompt myformat\n\u30E2\u30FC\u30C9myformat\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n
+help.set.prompt = \u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u6A19\u6E96\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u4E21\u65B9\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059:\n\n\t/set prompt <mode> "<prompt>" "<continuation-prompt>"\n\n\u6A19\u6E96\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set prompt [<mode>]\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<prompt>\u304A\u3088\u3073<continuation-prompt>\u306F\u5165\u529B\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u3057\u3066\u51FA\u529B\u3055\u308C\u308B\u5F15\u7528\u7B26\u3067\u56F2\u307E\u308C\u305F\u6587\u5B57\u5217\u3067\u3059\u3002\n\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3001\u4E21\u65B9\u3068\u3082\u3001\u6B21\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u3067\u7F6E\u304D\u63DB\u3048\u3089\u308C\u308B'%%s'\u3092\u542B\u3080\u3053\u3068\u304C\u3067\u304D\u307E\u3059 --\n\u5165\u529B\u3057\u305F\u5185\u5BB9\u304C\u305D\u306EID\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u306A\u3044\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u305F\u3068\u3048\u3070\u3001\u30A8\u30E9\u30FC\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9\u3067\u3042\u308B\u5834\u5408\u306A\u3069\u3067\u3059\u3002\n\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u306F\u8907\u6570\u884C\u30B9\u30CB\u30DA\u30C3\u30C8\u306E2\u884C\u76EE\u4EE5\u964D\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<prompt>\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u73FE\u5728\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set prompt myformat\n\u30E2\u30FC\u30C9myformat\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n
 
 help.set.editor =/edit\u30B3\u30DE\u30F3\u30C9\u3067\u8D77\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6307\u5B9A\u3057\u307E\u3059:\n\n\t/set editor [-retain] [-wait] <command>\n\n\t/set editor [-retain] -default\n\n\t/set editor [-retain] -delete\n\n\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u305F\u3081\u306B\u73FE\u5728\u306E\u30A8\u30C7\u30A3\u30BF\u8A2D\u5B9A\u3092\u4FDD\u6301\u3057\u307E\u3059:\n\n\t/set editor -retain\n\n/edit\u30B3\u30DE\u30F3\u30C9\u3067\u8D77\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set editor\n\n<command>\u306F\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0\u4F9D\u5B58\u6587\u5B57\u5217\u3067\u3059\u3002\n<command>\u306B\u306F\u30B9\u30DA\u30FC\u30B9\u3067\u533A\u5207\u3089\u308C\u305F\u5F15\u6570(\u30D5\u30E9\u30B0\u306A\u3069)\u304C\u542B\u307E\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\n\n-default\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u7D44\u8FBC\u307F\u30A8\u30C7\u30A3\u30BF\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n-delete\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u4EE5\u524D\u306E\u8A2D\u5B9A\u306F\u7121\u8996\u3055\u308C\u307E\u3059 -- \u30A8\u30C7\u30A3\u30BF\n\u8A2D\u5B9A\u306F\u3001jshell\u30C4\u30FC\u30EB\u306E\u8D77\u52D5\u6642\u306B\u521D\u671F\u5316\u3055\u308C\u307E\u3059\u3002\u5177\u4F53\u7684\u306B\u306F\u3001\u4FDD\u6301\u3055\u308C\u305F\u8A2D\u5B9A\u304C\n\u5B58\u5728\u3059\u308B\u5834\u5408\u3001(\u4FDD\u6301\u3055\u308C\u305F\u8A2D\u5B9A\u3092\u524A\u9664\u3059\u308B-retain\u3068-delete\u306E\u4E21\u65B9\u304C\u6307\u5B9A\u3055\u308C\u3066\n\u3044\u306A\u3051\u308C\u3070)\u305D\u308C\u304C\u4F7F\u7528\u3055\u308C\u3001\u6B21\u306E\u74B0\u5883\u5909\u6570\u306E\u3044\u305A\u308C\u304B\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\n\u305D\u308C\u304C(\u305D\u306E\u9806\u5E8F\u3067)\u4F7F\u7528\u3055\u308C\u307E\u3059: JSHELLEDITOR\u3001VISUAL\u307E\u305F\u306FEDITOR\u3002\n\u305D\u308C\u4EE5\u5916\u306E\u5834\u5408\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u7D44\u8FBC\u307F\u30A8\u30C7\u30A3\u30BF\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<command>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u308C\u304C\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002<command>\u306F\u3001\n\u30D7\u30ED\u30B0\u30E9\u30E0\u3068\u30BC\u30ED\u500B\u4EE5\u4E0A\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u5F15\u6570\u3067\u69CB\u6210\u3055\u308C\u307E\u3059\u3002<command>\u304C\u4F7F\u7528\u3055\u308C\u308B\u5834\u5408\u3001\n\u7DE8\u96C6\u5BFE\u8C61\u306E\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u304C\u6700\u5F8C\u306E\u5F15\u6570\u3068\u3057\u3066\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002\n\u901A\u5E38\u3001\u7DE8\u96C6\u30E2\u30FC\u30C9\u306F\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u304C\u7D42\u4E86\u3059\u308B\u307E\u3067\u7D99\u7D9A\u3057\u307E\u3059\u3002\u4E00\u90E8\u306E\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u306F\u3001\n\u305F\u3068\u3048\u3070\u7DE8\u96C6\u30A6\u30A3\u30F3\u30C9\u30A6\u304C\u7D42\u4E86\u3059\u308B\u3068\u5373\u5EA7\u306B\u7D42\u4E86\u3059\u308B\u305F\u3081\u3001\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u30FB\u30D5\u30E9\u30B0\u3092\u4F7F\u7528\u3057\u3066\n\u5373\u6642\u306E\u7D42\u4E86\u3092\u56DE\u907F\u3059\u308B\u304B\u3001-wait\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001\u7DE8\u96C6\u30E2\u30FC\u30C9\u304C\u7D42\u4E86\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\u3092\n\u6307\u5B9A\u3059\u308B\u3088\u3046\u30E6\u30FC\u30B6\u30FC\u306B\u8981\u6C42\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\n\u6CE8\u610F: \
 \u7DE8\u96C6\u30E2\u30FC\u30C9\u4E2D\u3001\u30B3\u30DE\u30F3\u30C9\u5165\u529B\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002\u7DE8\u96C6\u30E2\u30FC\u30C9\u306E\u7D42\u4E86\u5F8C\u3001\u7DE8\u96C6\u3055\u308C\u305F\n\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u5909\u66F4\u5185\u5BB9\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002\n\n-retain\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u8A2D\u5B9A\u306Fjshell\u30C4\u30FC\u30EB\u306E\u3053\u306E\u5B9F\u884C\u3068\u5C06\u6765\u306E\n\u5B9F\u884C\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<command>\u307E\u305F\u306F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u30A8\u30C7\u30A3\u30BF\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_zh_CN.properties	Fri Feb 24 11:07:03 2017 +0000
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_zh_CN.properties	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,11 @@
 # questions.
 #
 
-jshell.msg.welcome =\u6B22\u8FCE\u4F7F\u7528 JShell -- \u7248\u672C {0}\n\u8981\u5927\u81F4\u4E86\u89E3\u8BE5\u7248\u672C, \u8BF7\u952E\u5165: /help intro\n
+jshell.msg.welcome =\u6B22\u8FCE\u4F7F\u7528 JShell -- \u7248\u672C {0}\n\u8981\u5927\u81F4\u4E86\u89E3\u8BE5\u7248\u672C, \u8BF7\u952E\u5165: /help intro
 jshell.err.opt.arg = \u7F3A\u5C11 {0} \u7684\u53C2\u6570\u3002
 jshell.err.opt.invalid = \u65E0\u6548\u7684\u9009\u9879: {0}\u3002
 jshell.err.opt.one = \u53EA\u80FD\u4F7F\u7528\u4E00\u4E2A {0} \u9009\u9879\u3002
-jshell.err.opt.startup.one = \u53EA\u80FD\u4F7F\u7528\u4E00\u4E2A --startup \u6216 --no-startup \u9009\u9879\u3002
+jshell.err.opt.startup.conflict = \u51B2\u7A81\u7684\u9009\u9879: \u540C\u65F6\u4F7F\u7528\u4E86 --startup \u548C --no-startup\u3002
 jshell.err.opt.feedback.one = \u53EA\u80FD\u4F7F\u7528\u4E00\u4E2A\u53CD\u9988\u9009\u9879 (--feedback, -q, -s \u6216 -v)\u3002
 jshell.err.opt.unknown = \u672A\u77E5\u9009\u9879: {0}
 
@@ -48,12 +48,15 @@
 
 jshell.err.no.such.command.or.snippet.id = \u6CA1\u6709\u8FD9\u6837\u7684\u547D\u4EE4\u6216\u7247\u6BB5 id: {0}
 jshell.err.command.ambiguous = \u547D\u4EE4 ''{0}'' \u4E0D\u660E\u786E: {1}
+jshell.msg.set.restore = \u6B63\u5728\u8BBE\u7F6E\u65B0\u9009\u9879\u5E76\u8FD8\u539F\u72B6\u6001\u3002
 jshell.msg.set.editor.set = \u7F16\u8F91\u5668\u8BBE\u7F6E\u4E3A: {0}
 jshell.msg.set.editor.retain = \u4FDD\u7559\u7684\u7F16\u8F91\u5668\u8BBE\u7F6E: {0}
-jshell.err.cant.launch.editor = \u65E0\u6CD5\u542F\u52A8\u7F16\u8F91\u5668 -- \u610F\u5916\u7684\u5F02\u5E38\u9519\u8BEF: {0}
-jshell.msg.try.set.editor = \u8BF7\u5C1D\u8BD5\u901A\u8FC7 /set editor \u6765\u4F7F\u7528\u5916\u90E8\u7F16\u8F91\u5668\u3002
+jshell.err.no.builtin.editor = \u5185\u7F6E\u7F16\u8F91\u5668\u4E0D\u53EF\u7528\u3002
+jshell.err.cant.launch.editor = \u65E0\u6CD5\u542F\u52A8\u5185\u7F6E\u7F16\u8F91\u5668 -- \u610F\u5916\u7684\u5F02\u5E38\u9519\u8BEF: {0}
+jshell.msg.try.set.editor = \u8BF7\u53C2\u9605 ''/help /set editor'' \u6765\u4E86\u89E3\u5982\u4F55\u4F7F\u7528\u5916\u90E8\u7F16\u8F91\u5668\u3002
 jshell.msg.press.return.to.leave.edit.mode = \u6309\u201C\u8FD4\u56DE\u201D\u9000\u51FA\u7F16\u8F91\u6A21\u5F0F\u3002
 jshell.err.wait.applies.to.external.editor = -wait \u9002\u7528\u4E8E\u5916\u90E8\u7F16\u8F91\u5668
+jshell.label.editpad = JShell Edit Pad
 
 jshell.err.setting.to.retain.must.be.specified = \u5FC5\u987B\u6307\u5B9A\u8981\u4FDD\u7559\u7684\u8BBE\u7F6E -- {0}
 jshell.msg.set.show.mode.settings = \n\u8981\u663E\u793A\u6A21\u5F0F\u8BBE\u7F6E, \u8BF7\u4F7F\u7528 ''/set prompt'', ''/set truncation'', ...\n\u6216\u8005\u4F7F\u7528 ''/set mode'' \u540E\u8DDF\u53CD\u9988\u6A21\u5F0F\u540D\u79F0\u3002
@@ -84,7 +87,7 @@
 
 jshell.err.help.arg = \u6CA1\u6709\u547D\u4EE4\u6216\u4E3B\u9898\u4EE5\u63D0\u4F9B\u7684\u53C2\u6570\u5F00\u59CB: {0}
 jshell.msg.help.begin =\u952E\u5165 Java \u8BED\u8A00\u8868\u8FBE\u5F0F, \u8BED\u53E5\u6216\u58F0\u660E\u3002\n\u6216\u8005\u952E\u5165\u4EE5\u4E0B\u547D\u4EE4\u4E4B\u4E00:\n
-jshell.msg.help.subject =\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u952E\u5165 ''/help'', \u540E\u8DDF\u547D\u4EE4\u6216\u4E3B\u9898\u7684\u540D\u79F0\u3002\n\u4F8B\u5982 ''/help /list'' \u6216 ''/help intro''\u3002\u4E3B\u9898:\n
+jshell.msg.help.subject =\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u952E\u5165 ''/help'', \u540E\u8DDF\n\u547D\u4EE4\u6216\u4E3B\u9898\u7684\u540D\u79F0\u3002\n\u4F8B\u5982 ''/help /list'' \u6216 ''/help intro''\u3002\u4E3B\u9898:\n
 
 jshell.err.drop.arg =\u5728 /drop \u53C2\u6570\u4E2D, \u8BF7\u6307\u5B9A\u8981\u5220\u9664\u7684\u5BFC\u5165, \u53D8\u91CF, \u65B9\u6CD5\u6216\u7C7B\u3002\n\u6309 id \u6216\u540D\u79F0\u6307\u5B9A\u3002\u4F7F\u7528 /list \u53EF\u67E5\u770B id\u3002\u4F7F\u7528 /reset \u53EF\u91CD\u7F6E\u6240\u6709\u72B6\u6001\u3002
 jshell.err.drop.ambiguous = \u53C2\u6570\u5F15\u7528\u4E86\u591A\u4E2A\u5BFC\u5165, \u53D8\u91CF, \u65B9\u6CD5\u6216\u7C7B\u3002
@@ -133,6 +136,11 @@
 jshell.err.retained.mode.failure = \u4FDD\u7559\u6A21\u5F0F\u4E2D\u51FA\u73B0\u6545\u969C (\u5DF2\u6E05\u9664\u6A21\u5F0F) -- {0} {1}
 
 jshell.console.see.more = <\u6309 Tab \u53EF\u67E5\u770B\u66F4\u591A\u5185\u5BB9>
+jshell.console.see.javadoc = <\u518D\u6B21\u6309 shift-tab \u53EF\u67E5\u770B javadoc>
+jshell.console.see.help = <\u518D\u6B21\u6309 shift-tab \u53EF\u67E5\u770B\u8BE6\u7EC6\u5E2E\u52A9>
+jshell.console.see.next.page = <\u6309\u7A7A\u683C\u4EE5\u67E5\u770B\u4E0B\u4E00\u9875, \u6309 Q \u4EE5\u9000\u51FA>
+jshell.console.see.next.javadoc = <\u6309\u7A7A\u683C\u4EE5\u67E5\u770B\u4E0B\u4E00\u4E2A javadoc, \u6309 Q \u4EE5\u9000\u51FA>
+jshell.console.no.javadoc = <\u627E\u4E0D\u5230 javadoc>
 jshell.console.do.nothing = \u4E0D\u6267\u884C\u4EFB\u4F55\u64CD\u4F5C
 jshell.console.choice = \u9009\u9879: 
 jshell.console.create.variable = \u521B\u5EFA\u53D8\u91CF
@@ -142,7 +150,7 @@
 
 
 help.usage = \u7528\u6CD5:   jshell <\u9009\u9879> <\u52A0\u8F7D\u6587\u4EF6>\n\u5176\u4E2D, \u53EF\u80FD\u7684\u9009\u9879\u5305\u62EC:\n    --class-path <\u8DEF\u5F84>   \u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n    --module-path <\u8DEF\u5F84>  \u6307\u5B9A\u67E5\u627E\u5E94\u7528\u7A0B\u5E8F\u6A21\u5757\u7684\u4F4D\u7F6E\n    --add-modules <\u6A21\u5757>(,<\u6A21\u5757>)*\n                          \u6307\u5B9A\u8981\u89E3\u6790\u7684\u6A21\u5757; \u5982\u679C <\u6A21\u5757> \n                          \u4E3A ALL-MODULE-PATH, \u5219\u4E3A\u6A21\u5757\u8DEF\u5F84\u4E2D\u7684\u6240\u6709\u6A21\u5757\n    --startup <\u6587\u4EF6>      \u5BF9\u542F\u52A8\u5B9A\u4E49\u6267\u884C\u5355\u6B21\u66FF\u6362\n    --no-startup          \u4E0D\u8FD0\u884C\u542F\u52A8\u5B9A\u4E49\n    --feedback <\u6A21\u5F0F>     \u6307\u5B9A\u521D\u59CB\u53CD\u9988\u6A21\u5F0F\u3002\u8BE5\u6A21\u5F0F\u53EF\u4EE5\u662F\n                           \u9884\u5B9A\u4E49\u7684 (silent, concise, normal \u6216 verbose), \n                           \u4E5F\u53EF\u662F\u4EE5\u524D\u7528\u6237\u5B9A\u4E49\u7684\n    -q                    \u65E0\u63D0\u793A\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback concise\n    -s                    \u771F\u6B63\u65E0\u63D0\u793A\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback silent\n    -v                    \u8BE6\u7EC6\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback verbose\n    -J<\u6807\u8BB0>              \u76F4\u63A5\u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u8FD0\u884C\u65F6\u7CFB\u7EDF\u3002\n                           \u4E3A\u6BCF\u4E2A\u8FD0\u884C\u65F6\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -J\n    -R<\u6807\u8BB0>              \u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u8FDC\u7A0B\u8FD0\u884C\u65F6\u7CFB\u7EDF\u3002\n                           \u4E3A\u6BCF\u4E2A\u8FDC\u7A0B\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -R\n    -C<\u6807\u8BB0>              \u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u7F16\u8BD1\u5668\u3002\n                           \u4E3A\u6BCF\u4E2A\u7F16\u8BD1\u5668\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -C\n    --help                \u8F93\u51FA\u6807\u51C6\u9009\u9879\u7684\u6B64\u63D0\u8981\n    --version             \u7248\u672C\u4FE1\u606F\n    -X                    \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u5E2E\u52A9\n
-help.usage.x = \    --add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>   \u5C06\u6307\u5B9A\u7684\u6A21\u5757\u4E13\u7528\u7A0B\u5E8F\u5305\u5BFC\u51FA\u5230\u7247\u6BB5\n    \n\u8FD9\u4E9B\u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
+help.usage.x = \    --add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>      \u5C06\u6307\u5B9A\u7684\u6A21\u5757\u4E13\u7528\u7A0B\u5E8F\u5305\u5BFC\u51FA\u5230\u7247\u6BB5\n    --execution <\u89C4\u8303>                 \u6307\u5B9A\u66FF\u4EE3\u6267\u884C\u5F15\u64CE\u3002\n                                         \u5176\u4E2D <\u89C4\u8303> \u662F ExecutionControl \u89C4\u8303\u3002\n                                         \u6709\u5173\u89C4\u8303\u7684\u8BED\u6CD5, \u8BF7\u53C2\u9605\u7A0B\u5E8F\u5305\n                                         jdk.jshell.spi \u7684\u6587\u6863\n    \n\u8FD9\u4E9B\u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
 
 help.list.summary = \u5217\u51FA\u60A8\u952E\u5165\u7684\u6E90
 help.list.args = [<\u540D\u79F0\u6216 id>|-all|-start]
@@ -185,16 +193,16 @@
 help.exit =\u9000\u51FA jshell \u5DE5\u5177\u3002\u4E0D\u4FDD\u5B58\u5DE5\u4F5C\u3002\n\u5728\u4F7F\u7528\u6B64\u547D\u4EE4\u524D\u5E94\u8BE5\u5148\u4FDD\u5B58\u4EFB\u4F55\u5DE5\u4F5C
 
 help.reset.summary = \u91CD\u542F jshell
-help.reset.args =
-help.reset =\u91CD\u542F jshell \u5DE5\u5177\u4EE3\u7801\u548C\u6267\u884C\u72B6\u6001:\n\t* \u6240\u6709\u8F93\u5165\u7684\u4EE3\u7801\u90FD\u5C06\u4E22\u5931\u3002\n\t* \u91CD\u65B0\u6267\u884C\u542F\u52A8\u4EE3\u7801\u3002\n\t* \u91CD\u65B0\u542F\u52A8\u6267\u884C\u72B6\u6001\u3002\n\t* \u6E05\u9664\u7C7B\u8DEF\u5F84\u3002\n\u5C06\u5DE5\u5177\u8BBE\u7F6E\u4FDD\u6301\u4E3A\u901A\u8FC7\u4EE5\u4E0B\u547D\u4EE4\u6267\u884C\u7684\u8BBE\u7F6E: /set ...\n\u5728\u4F7F\u7528\u6B64\u547D\u4EE4\u524D\u5E94\u8BE5\u5148\u4FDD\u5B58\u4EFB\u4F55\u5DE5\u4F5C
+help.reset.args = [-class-path <\u8DEF\u5F84>] [-module-path <\u8DEF\u5F84>] [-add-modules <\u6A21\u5757>]...
+help.reset =\u91CD\u7F6E jshell \u5DE5\u5177\u4EE3\u7801\u548C\u6267\u884C\u72B6\u6001:\n\t* \u6240\u6709\u8F93\u5165\u7684\u4EE3\u7801\u90FD\u5C06\u4E22\u5931\u3002\n\t* \u91CD\u65B0\u6267\u884C\u542F\u52A8\u4EE3\u7801\u3002\n\t* \u91CD\u65B0\u542F\u52A8\u6267\u884C\u72B6\u6001\u3002\n\t\u5C06\u5DE5\u5177\u8BBE\u7F6E\u4FDD\u6301\u4E3A\u901A\u8FC7\u4EE5\u4E0B\u547D\u4EE4\u6267\u884C\u7684\u8BBE\u7F6E: /set ...\n\u5728\u4F7F\u7528\u6B64\u547D\u4EE4\u524D\u5E94\u8BE5\u5148\u4FDD\u5B58\u4EFB\u4F55\u5DE5\u4F5C\u3002\n/reset \u547D\u4EE4\u63A5\u53D7\u4E0A\u4E0B\u6587\u9009\u9879, \u8BF7\u53C2\u9605:\n\n\t/help context\n
 
-help.reload.summary = \u91CD\u542F\u548C\u91CD\u653E\u76F8\u5173\u5386\u53F2\u8BB0\u5F55 -- \u5F53\u524D\u5386\u53F2\u8BB0\u5F55\u6216\u4E0A\u4E00\u4E2A\u5386\u53F2\u8BB0\u5F55 (-restore)
-help.reload.args = [-restore] [-quiet]
-help.reload =\u91CD\u7F6E jshell \u5DE5\u5177\u4EE3\u7801\u548C\u6267\u884C\u72B6\u6001, \u7136\u540E\u6309\u7167\u5404\u6709\u6548\u7247\u6BB5\u548C\n\u4EFB\u4F55 /drop \u6216 /classpath \u547D\u4EE4\u7684\u8F93\u5165\u987A\u5E8F\u91CD\u653E\u5B83\u4EEC\u3002\n\n/reload\n\t\u91CD\u7F6E\u548C\u91CD\u653E\u81EA\u8FDB\u5165 jshell \u4EE5\u6765\u7684\u6709\u6548\u5386\u53F2\u8BB0\u5F55, \n\t\u6216\u8005\u6267\u884C /reset \u6216 /reload \u547D\u4EE4\u4E2D\u6700\u65B0\u7684\u90A3\u4E2A\n\t\u547D\u4EE4\u3002\n\n/reload -restore\n\t\u91CD\u7F6E\u5E76\u91CD\u653E\u4E0A\u4E00\u6B21\u8FDB\u5165 jshell \u4EE5\u53CA\u6700\u8FD1\u8FDB\u5165 jshell\n\t\u4E4B\u95F4\u7684\u6709\u6548\u5386\u53F2\u8BB0\u5F55, \u6216\u8005\u6267\u884C /reset \u6216 /reload\n\t\u547D\u4EE4\u3002\u8FD9\u8FDB\u800C\u53EF\u7528\u4E8E\u8FD8\u539F\u4E0A\u4E00\u4E2A\n\tjshell \u5DE5\u5177\u4F1A\u8BDD\u3002\n\n/reload [-restore] -quiet\n\t\u4F7F\u7528 '-quiet' \u53C2\u6570\u65F6, \u4E0D\u663E\u793A\u91CD\u653E\u3002\u5C06\u663E\u793A\u9519\u8BEF\u3002
+help.reload.summary = \u91CD\u7F6E\u548C\u91CD\u653E\u76F8\u5173\u5386\u53F2\u8BB0\u5F55 -- \u5F53\u524D\u5386\u53F2\u8BB0\u5F55\u6216\u4E0A\u4E00\u4E2A\u5386\u53F2\u8BB0\u5F55 (-restore)
+help.reload.args = [-restore] [-quiet] [-class-path <\u8DEF\u5F84>] [-module-path <\u8DEF\u5F84>]...
+help.reload =\u91CD\u7F6E jshell \u5DE5\u5177\u4EE3\u7801\u548C\u6267\u884C\u72B6\u6001, \u7136\u540E\u6309\u7167\u5404\u6709\u6548\u7247\u6BB5\u548C\n\u4EFB\u4F55 /drop \u6216 /classpath \u547D\u4EE4\u7684\u8F93\u5165\u987A\u5E8F\u91CD\u653E\u5B83\u4EEC\u3002\n\n/reload\n\t\u91CD\u7F6E\u548C\u91CD\u653E\u81EA\u8FDB\u5165 jshell \u4EE5\u6765\u7684\u6709\u6548\u5386\u53F2\u8BB0\u5F55, \n\t\u6216\u8005\u6267\u884C /reset \u6216 /reload \u547D\u4EE4\u4E2D\u6700\u65B0\u7684\u90A3\u4E2A\n\t\u547D\u4EE4\u3002\n\n/reload -restore\n\t\u91CD\u7F6E\u5E76\u91CD\u653E\u4E0A\u4E00\u6B21\u8FDB\u5165 jshell \u4E0E\u6700\u8FD1\u8FDB\u5165 jshell\n\t\u4E4B\u95F4\u7684\u6709\u6548\u5386\u53F2\u8BB0\u5F55, \u6216\u8005\u6267\u884C /reset \u6216 /reload\n\t\u547D\u4EE4\u3002\u8FD9\u8FDB\u800C\u53EF\u7528\u4E8E\u8FD8\u539F\u4E0A\u4E00\u4E2A\n\tjshell \u5DE5\u5177\u4F1A\u8BDD\u3002\n\n/reload [-restore] -quiet\n\t\u4F7F\u7528 '-quiet' \u53C2\u6570\u65F6, \u4E0D\u663E\u793A\u91CD\u653E\u3002\u5C06\u663E\u793A\u9519\u8BEF\u3002\n\n\u4E0A\u9762\u6BCF\u4E2A\u547D\u4EE4\u90FD\u63A5\u53D7\u4E0A\u4E0B\u6587\u9009\u9879, \u8BF7\u53C2\u9605:\n\n\t/help context\n\n\u4F8B\u5982:\n\n\t/reload -add-modules com.greetings -restore
 
-help.classpath.summary = \u5C06\u8DEF\u5F84\u6DFB\u52A0\u5230\u7C7B\u8DEF\u5F84
-help.classpath.args = <path>
-help.classpath =\u5411\u7C7B\u8DEF\u5F84\u9644\u52A0\u5176\u4ED6\u8DEF\u5F84\u3002
+help.env.summary = \u67E5\u770B\u6216\u66F4\u6539\u8BC4\u4F30\u4E0A\u4E0B\u6587
+help.env.args = [-class-path <\u8DEF\u5F84>] [-module-path <\u8DEF\u5F84>] [-add-modules <\u6A21\u5757>] ...
+help.env =\u67E5\u770B\u6216\u66F4\u6539\u8BC4\u4F30\u4E0A\u4E0B\u6587\u3002\u8BC4\u4F30\u4E0A\u4E0B\u6587\u662F\u7C7B\u8DEF\u5F84, \n\u6A21\u5757\u8DEF\u5F84\u7B49\u7B49\u3002\n/env\n\t\u663E\u793A\u4F5C\u4E3A\u4E0A\u4E0B\u6587\u9009\u9879\u663E\u793A\u7684\u8BC4\u4F30\u4E0A\u4E0B\u6587\u3002\n\n/env [-class-path <\u8DEF\u5F84>] [-module-path <\u8DEF\u5F84>] [-add-modules <\u6A21\u5757>] ...\n\t\u5728\u81F3\u5C11\u8BBE\u7F6E\u4E00\u4E2A\u9009\u9879\u7684\u60C5\u51B5\u4E0B, \u8BBE\u7F6E\u8BC4\u4F30\u4E0A\u4E0B\u6587\u3002\u5982\u679C\n\t\u5DF2\u5B9A\u4E49\u7247\u6BB5, \u5219\u5C06\u4F7F\u7528\u65B0\u8BC4\u4F30\u4E0A\u4E0B\u6587\u91CD\u7F6E\n\t\u6267\u884C\u72B6\u6001, \u5E76\u4E14\u5C06\u91CD\u653E\u7247\u6BB5 -- \u4E0D\u663E\u793A\n\t\u91CD\u653E, \u4F46\u662F\u5C06\u663E\u793A\u9519\u8BEF\u3002\u8FD9\u7B49\u540C\u4E8E: /reload -quiet\n\t\u6709\u5173\u4E0A\u4E0B\u6587\u9009\u9879\u7684\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605:\n\n\t\t/help context\n\n\t\u4F8B\u5982:\n\n\t\t/env -add-modules com.greetings
 
 help.history.summary = \u60A8\u952E\u5165\u7684\u5185\u5BB9\u7684\u5386\u53F2\u8BB0\u5F55
 help.history.args =
@@ -234,6 +242,8 @@
 help.shortcuts.summary = \u5FEB\u6377\u65B9\u5F0F\u7684\u8BF4\u660E
 help.shortcuts =\u652F\u6301\u7684\u5FEB\u6377\u65B9\u5F0F\u5305\u62EC:\n\n<tab>\n\t\t\u5728\u8F93\u5165 Java \u6807\u8BC6\u7B26, jshell \u547D\u4EE4\u6216 jshell\n\t\t\u547D\u4EE4\u53C2\u6570 (\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B) \u7684\u524D\u51E0\u4E2A\u5B57\u6BCD\u540E,\n\t\t\u6309 <tab> \u952E\u53EF\u4EE5\u5B8C\u6210\u8F93\u5165\u3002\n\t\t\u5982\u679C\u6709\u591A\u4E2A\u8F93\u5165\u63D0\u793A, \u5219\u663E\u793A\u53EF\u80FD\u7684\u8F93\u5165\u63D0\u793A\u3002\n\nShift-<tab>\n\t\t\u5728\u65B9\u6CD5\u6216\u6784\u9020\u5668\u8C03\u7528\u7684\u540D\u79F0\u548C\u5DE6\u62EC\u53F7\u540E\u9762,\n\t\t\u6309\u4F4F <shift> \u952E\u5E76\u6309 <tab> \u53EF\u67E5\u770B\u6240\u6709\n\t\t\u5339\u914D\u7684\u65B9\u6CD5/\u6784\u9020\u5668\u7684\u63D0\u8981\u3002\n\n<fix-shortcut> v\n\t\t\u5728\u5B8C\u6574\u7684\u8868\u8FBE\u5F0F\u540E\u9762, \u6309 "<fix-shortcut> v" \u53EF\u4EE5\u5F15\u5165\u65B0\u7684\u53D8\u91CF,\n\t\t\u5176\u7C7B\u578B\u57FA\u4E8E\u8868\u8FBE\u5F0F\u7684\u7C7B\u578B\u3002\n\t\t"<fix-shortcut>" \u53EF\u4EE5\u662F Alt-F1 \u6216 Alt-Enter, \u5177\u4F53\u53D6\u51B3\u4E8E\u5E73\u53F0\u3002\n\n<fix-shortcut> i\n\t\t\u5728\u4E0D\u53EF\u89E3\u6790\u7684\u6807\u8BC6\u7B26\u540E\u9762, \u6309 "<fix-shortcut> i", \u6B64\u65F6 jshell \u5C06\u4F1A\n\t\t\u6839\u636E\u6307\u5B9A\u7C7B\u8DEF\u5F84\u7684\u5185\u5BB9\u63D0\u8BAE\u53EF\u80FD\u7684\u5168\u9650\u5B9A\u540D\u79F0\u3002\n\t\t"<fix-shortcut>" \u53EF\u4EE5\u662F Alt-F1 \u6216 Alt-Enter, \u5177\u4F53\u53D6\u51B3\u4E8E\u5E73\u53F0\u3002
 
+help.context.summary = /env /reload \u548C /reset \u7684\u8BC4\u4F30\u4E0A\u4E0B\u6587\u9009\u9879
+help.context =\u8FD9\u4E9B\u9009\u9879\u7528\u4E8E\u914D\u7F6E\u8BC4\u4F30\u4E0A\u4E0B\u6587, \u5B83\u4EEC\u53EF\u4EE5\u5728\u542F\u52A8\njshell \u65F6\u6307\u5B9A: \u5728\u547D\u4EE4\u884C\u4E0A, \u6216\u8005\u4F7F\u7528\u547D\u4EE4 /env,\n/reload \u6216 /reset \u91CD\u65B0\u542F\u52A8\u65F6\u3002\n\n\u5B83\u4EEC\u662F:\n\t--class-path <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n\t\t\u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u7684\u76EE\u5F55, JAR \n\t\t\u6863\u6848\u548C ZIP \u6863\u6848\u7684\u5217\u8868\u3002\n\t\t\u8BE5\u5217\u8868\u4F7F\u7528\u8DEF\u5F84\u5206\u9694\u7B26\u5206\u9694\n\t\t(\u5728 unix/linux/mac \u4E0A\u4F7F\u7528 :, \u5728 Windows \u4E0A\u4F7F\u7528 ;)\u3002\n\t--module-path <\u6A21\u5757\u8DEF\u5F84>...\n\t\t\u76EE\u5F55\u5217\u8868, \u5176\u4E2D\u6BCF\u4E2A\u76EE\u5F55\n\t\t\u90FD\u662F\u4E00\u4E2A\u5305\u542B\u6A21\u5757\u7684\u76EE\u5F55\u3002\n\t\t\u8BE5\u5217\u8868\u4F7F\u7528\u8DEF\u5F84\u5206\u9694\u7B26\u5206\u9694\n\t\t(\u5728 unix/linux/mac \u4E0A\u4F7F\u7528 :, \u5728 Windows \u4E0A\u4F7F\u7528 ;)\u3002\n\t--add-modules <\u6A21\u5757\u540D\u79F0>[,<\u6A21\u5757\u540D\u79F0>...]\n\t\t\u9664\u4E86\u521D\u59CB\u6A21\u5757\u4E4B\u5916\u8981\u89E3\u6790\u7684\u6839\u6A21\u5757\u3002\n\t\t<\u6A21\u5757\u540D\u79F0> \u8FD8\u53EF\u4EE5\u662F ALL-DEFAULT, ALL-SYSTEM,\n\t\tALL-MODULE-PATH\u3002\n\t--add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>=<\u76EE\u6807\u6A21\u5757>(,<\u76EE\u6807\u6A21\u5757>)*\n\t\t\u66F4\u65B0 <\u6A21\u5757> \u4EE5\u5C06 <\u7A0B\u5E8F\u5305> \u5BFC\u51FA\u5230 <\u76EE\u6807\u6A21\u5757>,\n\t\t\u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\u3002\n\t\t<\u76EE\u6807\u6A21\u5757> \u53EF\u4EE5\u662F ALL-UNNAMED \u4EE5\u5BFC\u51FA\u5230\u5168\u90E8\n\t\t\u672A\u547D\u540D\u6A21\u5757\u3002\u5728 jshell \u4E2D, \u5982\u679C\u672A\u6307\u5B9A \n\t\t<\u76EE\u6807\u6A21\u5757> (no =), \u5219\u4F7F\u7528 ALL-UNNAMED\u3002\n\n\u5728\u547D\u4EE4\u884C\u4E0A, \u8FD9\u4E9B\u9009\u9879\u5FC5\u987B\u6709\u4E24\u4E2A\u77ED\u5212\u7EBF, \u4F8B\u5982: --module-path\n\u5728 jshell \u547D\u4EE4\u4E0A, \u5B83\u4EEC\u53EF\u4EE5\u6709\u4E00\u4E2A\u6216\u4E24\u4E2A\u77ED\u5212\u7EBF, \u4F8B\u5982: -module-path\n
 help.set._retain = '-retain' \u9009\u9879\u4FDD\u5B58\u8BBE\u7F6E\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528\u3002\n\u53EF\u4EE5\u5728 /set \u7684\u4EE5\u4E0B\u683C\u5F0F\u4E2D\u4F7F\u7528 -retain \u9009\u9879:\n\n\t/set editor -retain\n\t/set start -retain\n\t/set feedback -retain\n\t/set mode -retain\n\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u8FD9\u4E9B\u547D\u4EE4 -- \u4F8B\u5982, /help /set editor
 
 help.set.format = \u8BBE\u7F6E\u7528\u4E8E\u62A5\u544A\u7247\u6BB5\u4E8B\u4EF6\u7684\u683C\u5F0F\uFF1A\n\n\t/set format <\u6A21\u5F0F> <\u5B57\u6BB5> "<\u683C\u5F0F>" <\u9009\u62E9\u5668>...\n\n\u663E\u793A\u683C\u5F0F\u8BBE\u7F6E:\n\n\t/set format [<\u6A21\u5F0F> [<\u5B57\u6BB5>]]\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u7684\u540D\u79F0 -- \u8BF7\u53C2\u9605 '/help /set mode'\u3002\n\u5176\u4E2D <\u5B57\u6BB5> \u662F\u8981\u5B9A\u4E49\u7684\u4E0A\u4E0B\u6587\u7279\u5B9A\u683C\u5F0F\u7684\u540D\u79F0\u3002\n\u5176\u4E2D <\u683C\u5F0F> \u662F\u4E00\u4E2A\u5E26\u5F15\u53F7\u7684\u5B57\u7B26\u4E32, \u8BE5\u5B57\u7B26\u4E32\u5C06\u4E3A\n\u5B57\u6BB5\u7684\u503C (\u5982\u679C\u9009\u62E9\u5668\u5339\u914D, \u6216\u8005\u6CA1\u6709\u4EFB\u4F55\u9009\u62E9\u5668)\u3002\n\u5728\u4F7F\u7528\u683C\u5F0F\u65F6, \u7528\u5927\u62EC\u53F7\u62EC\u8D77\u7684\u5B57\u6BB5\u540D\u5C06\u4F1A\u5728\u76F8\u5E94\u65F6\u95F4\n\u4F7F\u7528\u5B57\u6BB5\u503C\u66FF\u6362\u3002\u8FD9\u4E9B\u5B57\u6BB5\u53EF\u80FD\u5DF2\u4F7F\u7528\u6B64\u547D\u4EE4\u5B9A\u4E49, \n\u4E5F\u53EF\u80FD\u662F\u7279\u5B9A\u4E8E\u4E0A\u4E0B\u6587\u7684\u4EE5\u4E0B\u9884\u5B9A\u4E49\u5B57\u6BB5\u4E4B\u4E00:\n\t{name}       == \u540D\u79F0, \u4F8B\u5982: \u53D8\u91CF\u7684\u540D\u79F0, ...\n\t{type}       == \u7C7B\u578B\u540D\u79F0\u3002\u53D8\u91CF\u6216\u8868\u8FBE\u5F0F\u7684\u7C7B\u578B,\n\t\t\t\u65B9\u6CD5\u7684\u53C2\u6570\u7C7B\u578B\n\t{value}      == \u8868\u8FBE\u5F0F\u6216\u53D8\u91CF\u521D\u59CB\u5316\u7684\u7ED3\u679C\u503C\n\t{unresolved} == \u672A\u89E3\u6790\u5F15\u7528\u7684\u5217\u8868\n\t{errors}     == \u53EF\u6062\u590D\u9519\u8BEF\u7684\u5217\u8868 (\u53EA\u5728\u5904\u7406\n\t\t\t"display" \u5B57\u6BB5\u671F\u95F4)\n\t{err}        == \u65E0\u683C\u5F0F\u7684\u9519\u8BEF\u884C (\u53EA\u5728\u5904\u7406\n\t\t\t"errorline" \u5B57\u6BB5\u671F\u95F4)\n\u8BE5\u5DE5\u5177\u8BBF\u95EE\u4EE5\u4E0B\u5B57\u6BB5\u6765\u786E\u5B9A\u6240\u663E\u793A\u7684\u53CD\u9988:\n\t{display}    == \u4E3A\u7247\u6BB5\u4E8B\u4EF6\u663E\u793A\u7684\u6D88\u606F\n\t{errorline}  == "errors" \u5B57\u6BB5\u4E2D\u7684\u4E00\u4E2A\u9519\u8BEF\u884C\u7684\u683C\u5F0F\n\t{pre}        == \u53CD\u9988\u524D\u7F00 (\u4F5C\u4E3A\u547D\u4EE4\u53CD\u9988\u7684\u5F00\u5934)\n\t{post}       == \u53CD\u9988\u540E\u7F00 (\u4F5C\u4E3A\u547D\u4EE4\u53CD\u9988\u7684\u7ED3\u5C3E)\n\t{errorpre}   == \u9519\u8BEF\u524D\u7F00 (\u4F5C\u4E3A\u9519\u8BEF\u53CD\u9988\u7684\u5F00\u5934)\n\t{errorpost}  == \u9519\u8BEF\u540E\u7F00 (\u4F5C\u4E3A\u9519\u8BEF\u53CD\u9988\u7684\u7ED3\u5C3E)\n\u8FD9\u4E9B\u5B57\u6BB5\u5177\u6709\u9ED8\u8BA4\u8BBE\u7F6E (\u53EF\u8986\u76D6)\u3002\n\u5176\u4E2D <selector> \u662F\u5E94\u7528\u683C\u5F0F\u7684\u4E0A\u4E0B\u6587\u3002\n\u9009\u62E9\u5668\u7ED3\u6784\u662F\u4E00\u4E2A\u7531\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u6784\u6210\u7684\u5217\u8868, \u4F7F\u7528\u8FDE\u5B57\u7B26\u5206\u9694\u3002\n\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u662F\u5355\u4E2A\u9009\u62E9\u5668\u7C7B\u578B\u7684\u503C\u7684\u5217\u8868, \u4F7F\u7528\u9017\u53F7\u5206\u9694\u3002\n\u5982\u679C\u6BCF\u4E2A\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u5339\u914D, \u5219\u9009\u62E9\u5668\u5339\u914D; \u5982\u679C\u5176\u4E2D\u67D0\u4E2A\u503C\n\u5339\u914D, \u5219\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u5339\u914D\u3002\n\ncase \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u7247\u6BB5\u7684\u7C7B\u578B\u3002\u503C\u5305\u62EC:\n\timport     -- \u5BFC\u5165\u58F0\u660E\n\tclass      -- \u7C7B\u58F0\u660E\n\tinterface  -- \u63A5\u53E3\u58F0\u660E\n\tenum       -- \u679A\u4E3E\u58F0\u660E\n\tannotation -- \u6CE8\u91CA\u63A5\u53E3\u58F0\u660E\n\tmethod     -- \u65B9\u6CD5\u58F0\u660E -- \u6CE8: {type}==parameter-types\n\tvardecl    -- \u4E0D\u5E26\u521D\u59CB\u5316\u7684\u53D8\u91CF\u58F0\u660E\n\tvardecl    -- \u5E26\u521D\u59CB\u5316\u7684\u53D8\u91CF\u58F0\u660E\n\texpression -- \u8868\u8FBE\u5F0F -- \u6CE8: \
@@ -245,7 +255,7 @@
 
 help.set.mode = \u521B\u5EFA\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F, \u4E5F\u53EF\u4EE5\u9009\u62E9\u4ECE\u73B0\u6709\u6A21\u5F0F\u590D\u5236:\n\n\t/set mode <\u6A21\u5F0F> [<\u65E7\u6A21\u5F0F>] [-command|-quiet|-delete]\n\u4FDD\u7559\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528:\n\n\t/set mode -retain <\u6A21\u5F0F>\n\n\u5220\u9664\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F:\n\n\t/set mode -delete [-retain] <\u6A21\u5F0F>\n\n\u663E\u793A\u53CD\u9988\u6A21\u5F0F\u8BBE\u7F6E:\n\n\t/set mode [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u65B0\u6A21\u5F0F> \u662F\u60A8\u5E0C\u671B\u521B\u5EFA\u7684\u6A21\u5F0F\u7684\u540D\u79F0\u3002\n\u800C <\u65E7\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u540D\u79F0\u3002\n\u5982\u679C\u5B58\u5728 <\u65E7\u6A21\u5F0F>, \u5176\u8BBE\u7F6E\u5C06\u4F1A\u590D\u5236\u5230\u65B0\u6A21\u5F0F\u3002\n'-command' \u4E0E '-quiet' \u51B3\u5B9A\u4E86\u662F\u5426\u663E\u793A\u4FE1\u606F\u6027/\u9A8C\u8BC1\u547D\u4EE4\u53CD\u9988\u3002\n\n\u4E00\u65E6\u521B\u5EFA\u65B0\u6A21\u5F0F, \u5373\u53EF\u4F7F\u7528 '/set format', '/set prompt' \u548C '/set truncation'\n\u8FDB\u884C\u914D\u7F6E\u3002\u4F7F\u7528 '/set feedback' \u53EF\u4F7F\u7528\u65B0\u6A21\u5F0F\u3002\n\n\u4F7F\u7528 -retain \u9009\u9879\u65F6, \u5C06\u5728\u672C\u6B21\u8FD0\u884C\u548C\u5C06\u6765\u8FD0\u884C jshell \u5DE5\u5177\u65F6\n\u4F7F\u7528\u8BE5\u6A21\u5F0F (\u5305\u62EC\u5176\u7EC4\u4EF6\u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u8BBE\u7F6E)\u3002\n\u540C\u65F6\u4F7F\u7528 -retain \u548C -delete \u65F6, \u5C06\u4ECE\u5F53\u524D\u548C\u5C06\u6765\u4F1A\u8BDD\u4E2D\n\u5220\u9664\u8BE5\u6A21\u5F0F\u3002\n\n\u4E0D\u5E26\u9009\u9879\u7684\u683C\u5F0F\u663E\u793A\u6A21\u5F0F\u8BBE\u7F6E\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u6A21\u5F0F\u8BBE\u7F6E\u3002\n\u6CE8: \u6A21\u5F0F\u8BBE\u7F6E\u5305\u62EC\u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u7684\n\u8BBE\u7F6E -- \u56E0\u6B64\u8FD8\u4F1A\u663E\u793A\u8FD9\u4E9B\u8BBE\u7F6E\u3002\n\u793A\u4F8B:\n\t/set mode myformat\n\u663E\u793A\u6A21\u5F0F myformat \u7684\u6A21\u5F0F, \u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u8BBE\u7F6E\n
 
-help.set.prompt = \u8BBE\u7F6E\u63D0\u793A\u7B26\u3002\u5FC5\u987B\u540C\u65F6\u8BBE\u7F6E\u6B63\u5E38\u63D0\u793A\u548C\u66F4\u591A\u63D0\u793A:\n\n\t/set prompt <\u6A21\u5F0F> "<\u63D0\u793A>" "<\u66F4\u591A\u63D0\u793A>"\n\n\u663E\u793A\u6B63\u5E38\u63D0\u793A\u548C\u66F4\u591A\u63D0\u793A:\n\n\t/set prompt [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u540D\u79F0\u3002\n\u800C <\u63D0\u793A> \u548C <\u66F4\u591A\u63D0\u793A> \u662F\u4F5C\u4E3A\u8F93\u5165\u63D0\u793A\u7B26\u8F93\u51FA\u7684\u5E26\u5F15\u53F7\u7684\u5B57\u7B26\u4E32;\n\u5B83\u4EEC\u5747\u53EF\u9009\u62E9\u6027\u5730\u5305\u542B '%s', \u8BE5\u53D8\u91CF\u5C06\u88AB\u66FF\u6362\u4E3A\u4E0B\u4E00\u4E2A\u7247\u6BB5 ID --\n\u8BF7\u6CE8\u610F, \u53EF\u80FD\u65E0\u6CD5\u5411\u6240\u8F93\u5165\u5185\u5BB9\u5206\u914D\u8BE5 ID, \u4F8B\u5982\u8FD9\u53EF\u80FD\u662F\u4E00\u4E2A\u9519\u8BEF\u6216\u547D\u4EE4\u3002\n\u66F4\u591A\u63D0\u793A\u5728\u591A\u884C\u7247\u6BB5\u7684\u7B2C\u4E8C\u884C\u4EE5\u53CA\u540E\u7EED\u884C\u4E0A\u4F7F\u7528\u3002\n\n\u4E0D\u5E26 <\u63D0\u793A> \u7684\u683C\u5F0F\u663E\u793A\u5F53\u524D\u8BBE\u7F6E\u63D0\u793A\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u63D0\u793A\u3002\n\u793A\u4F8B:\n\t/set prompt myformat\n\u663E\u793A\u4E3A\u6A21\u5F0F myformat \u8BBE\u7F6E\u7684\u63D0\u793A\n
+help.set.prompt = \u8BBE\u7F6E\u63D0\u793A\u3002\u5FC5\u987B\u540C\u65F6\u8BBE\u7F6E\u6B63\u5E38\u63D0\u793A\u548C\u66F4\u591A\u63D0\u793A:\n\n\t/set prompt <\u6A21\u5F0F> "<\u63D0\u793A>" "<\u66F4\u591A\u63D0\u793A>"\n\n\u663E\u793A\u6B63\u5E38\u63D0\u793A\u548C\u66F4\u591A\u63D0\u793A:\n\n\t/set prompt [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u540D\u79F0\u3002\n\u800C <\u63D0\u793A> \u548C <\u66F4\u591A\u63D0\u793A> \u662F\u4F5C\u4E3A\u8F93\u5165\u63D0\u793A\u8F93\u51FA\u7684\u5E26\u5F15\u53F7\u7684\u5B57\u7B26\u4E32;\n\u5B83\u4EEC\u5747\u53EF\u9009\u62E9\u6027\u5730\u5305\u542B '%%s', \u8BE5\u53D8\u91CF\u5C06\u88AB\u66FF\u6362\u4E3A\u4E0B\u4E00\u4E2A\u7247\u6BB5 ID --\n\u8BF7\u6CE8\u610F, \u53EF\u80FD\u65E0\u6CD5\u5411\u6240\u8F93\u5165\u5185\u5BB9\u5206\u914D\u8BE5 ID, \u4F8B\u5982\u8FD9\u53EF\u80FD\u662F\u4E00\u4E2A\u9519\u8BEF\u6216\u547D\u4EE4\u3002\n\u66F4\u591A\u63D0\u793A\u5728\u591A\u884C\u7247\u6BB5\u7684\u7B2C\u4E8C\u884C\u4EE5\u53CA\u540E\u7EED\u884C\u4E0A\u4F7F\u7528\u3002\n\n\u4E0D\u5E26 <\u63D0\u793A> \u7684\u683C\u5F0F\u663E\u793A\u5F53\u524D\u8BBE\u7F6E\u7684\u63D0\u793A\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u63D0\u793A\u3002\n\u793A\u4F8B:\n\t/set prompt myformat\n\u663E\u793A\u4E3A\u6A21\u5F0F myformat \u8BBE\u7F6E\u7684\u63D0\u793A\n
 
 help.set.editor =\u6307\u5B9A\u8981\u4E3A /edit \u547D\u4EE4\u542F\u52A8\u7684\u547D\u4EE4:\n\n\t/set editor [-retain] [-wait] <\u547D\u4EE4>\n\n\t/set editor [-retain] -default\n\n\t/set editor [-retain] -delete\n\n\u4FDD\u7559\u5F53\u524D\u7F16\u8F91\u5668\u8BBE\u7F6E\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528:\n\n\t/set editor -retain\n\n\u663E\u793A\u8981\u4E3A /edit \u547D\u4EE4\u542F\u52A8\u7684\u547D\u4EE4:\n\n\t/set editor\n\n<\u547D\u4EE4> \u662F\u4E0E\u64CD\u4F5C\u7CFB\u7EDF\u76F8\u5173\u7684\u5B57\u7B26\u4E32\u3002\n<\u547D\u4EE4> \u53EF\u4EE5\u5305\u542B\u7528\u7A7A\u683C\u5206\u9694\u7684\u53C2\u6570 (\u4F8B\u5982\u6807\u8BB0)\n\n\u5982\u679C\u6307\u5B9A\u4E86 -default \u9009\u9879, \u5C06\u4F7F\u7528\u5185\u7F6E\u9ED8\u8BA4\u7F16\u8F91\u5668\u3002\n\n\u5982\u679C\u6307\u5B9A\u4E86 -delete \u9009\u9879, \u5C06\u5FFD\u7565\u4EE5\u524D\u7684\u8BBE\u7F6E -- \u542F\u52A8\njshell \u5DE5\u5177\u65F6\u5C06\u521D\u59CB\u5316\u7F16\u8F91\u5668\u8BBE\u7F6E\u3002\u5177\u4F53\u6765\u8BF4, \u5982\u679C\u5B58\u5728\n\u4FDD\u7559\u7684\u8BBE\u7F6E, \u5C06\u4F7F\u7528\u4FDD\u7559\u7684\u8BBE\u7F6E (\u9664\u975E\u540C\u65F6\u6307\u5B9A -retain \u548C -delete --\n\u8FD9\u5C06\u5220\u9664\u4FDD\u7559\u7684\u8BBE\u7F6E), \u5982\u679C\u8BBE\u7F6E\u4E86\u4EE5\u4E0B\u67D0\u4E2A\u73AF\u5883\u53D8\u91CF, \n\u5C06\u4F7F\u7528\u5B83: JSHELLEDITOR, VISUAL \u6216 EDITOR (\u6309\u6B64\u987A\u5E8F)\u3002\u5426\u5219\u5C06\u4F7F\u7528\n\u5185\u7F6E\u9ED8\u8BA4\u7F16\u8F91\u5668\u3002\n\n\u5982\u679C\u6307\u5B9A\u4E86 <\u547D\u4EE4>, \u5B83\u5C06\u7528\u4F5C\u5916\u90E8\u7F16\u8F91\u5668\u3002<\u547D\u4EE4>\n\u7531\u7A0B\u5E8F\u53CA\u96F6\u4E2A\u6216\u591A\u4E2A\u7A0B\u5E8F\u53C2\u6570\u7EC4\u6210\u3002\u4F7F\u7528 <\u547D\u4EE4>\n\u65F6, \u8981\u7F16\u8F91\u7684\u4E34\u65F6\u6587\u4EF6\u5C06\u4F5C\u4E3A\u6700\u540E\u4E00\u4E2A\u53C2\u6570\u9644\u52A0\u3002\n\u901A\u5E38, \u7F16\u8F91\u6A21\u5F0F\u5C06\u6301\u7EED\u5230\u9000\u51FA\u5916\u90E8\u7F16\u8F91\u5668\u4E3A\u6B62\u3002\u67D0\u4E9B\u5916\u90E8\u7F16\u8F91\u5668\n\u5C06\u7ACB\u5373\u9000\u51FA (\u4F8B\u5982, \u5982\u679C\u9000\u51FA\u7F16\u8F91\u7A97\u53E3), \u5E94\u4F7F\u7528\u5916\u90E8\u7F16\u8F91\u5668\n\u6807\u8BB0\u963B\u6B62\u7ACB\u5373\u9000\u51FA, \u6216\u8005\u4F7F\u7528 -wait \u9009\u9879\n\u63D0\u793A\u7528\u6237\u6307\u793A\u4F55\u65F6\u5E94\u7ED3\u675F\u7F16\u8F91\u6A21\u5F0F\u3002\n\n\u6CE8: \u5728\u7F16\u8F91\u6A21\u5F0F\u4E0B, \u4E0D\u4F1A\u663E\u793A\u4EFB\u4F55\u547D\u4EE4\u8F93\u5165\u3002\u9000\u51FA\u7F16\u8F91\u6A21\u5F0F\u540E, \n\u5C06\u4E0D\u4F1A\u663E\u793A\u5BF9\u7F16\u8F91\u7684\u7247\u6BB5\u6240\u505A\u7684\u4EFB\u4F55\u66F4\u6539\u3002\n\n\u4F7F\u7528 -retain \u9009\u9879\u65F6, \u5C06\u5728\u672C\u6B21\u8FD0\u884C\u548C\u5C06\u6765\u8FD0\u884C jshell \u5DE5\u5177\u65F6\n\u4F7F\u7528\u8BE5\u8BBE\u7F6E\u3002\n\n\u4E0D\u5E26 <\u547D\u4EE4> \u6216\u9009\u9879\u7684\u683C\u5F0F\u663E\u793A\u7F16\u8F91\u5668\u8BBE\u7F6E\u3002\n
 
--- a/test/jdk/javadoc/doclet/testHelpOption/TestHelpOption.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/doclet/testHelpOption/TestHelpOption.java	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      4934778 4777599 6553182 8146427 8146475
+ * @bug      4934778 4777599 6553182 8146427 8146475 8175055
  * @summary  Make sure that -help, -helpfile and -nohelp options work correctly.
  * @author   jamieh
  * @library ../lib
@@ -111,7 +111,7 @@
                 "-helpfile", testSrc("test-help.html"),
                 "-helpfile", testSrc("test-help.html"),
                 testSrc("Sample.java"));
-        checkExit(Exit.ERROR);
+        checkExit(Exit.CMDERR);
     }
 
     @Test
@@ -121,7 +121,7 @@
                 "-helpfile", testSrc("test-help.html"),
                 "-nohelp",
                 testSrc("Sample.java"));
-        checkExit(Exit.ERROR);
+        checkExit(Exit.CMDERR);
     }
 
     private void checkOutput(boolean withOption) {
--- a/test/jdk/javadoc/tool/BadOptionsTest.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/BadOptionsTest.java	Fri Mar 03 09:05:36 2017 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8169676
+ * @bug 8169676 8175055
  * @summary boolean result of Option.process is often ignored
  * @modules jdk.compiler/com.sun.tools.javac.api
  * @modules jdk.compiler/com.sun.tools.javac.main
@@ -37,20 +37,6 @@
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.Set;
-
-import javax.lang.model.SourceVersion;
-
-import jdk.javadoc.doclet.Doclet;
-import jdk.javadoc.doclet.DocletEnvironment;
-import jdk.javadoc.doclet.Reporter;
 
 import toolbox.JavadocTask;
 import toolbox.ModuleBuilder;
@@ -146,6 +132,25 @@
         checkNotFound(result, "Exception", "at jdk.javadoc/");
     }
 
+    @Test
+    public void testSourcePathAndModuleSourceConflict() throws IOException {
+        Path msrc = Paths.get("msrc");
+        new ModuleBuilder(tb, "m1")
+                .exports("p1")
+                .classes("package p1; public class C1 { }")
+                .write(msrc);
+        Task.Result result = new JavadocTask(tb, Task.Mode.CMDLINE)
+                .options("-sourcepath", "src",
+                        "--module-source-path", msrc.getFileName().toString(),
+                        "--module", "m1")
+                .run(Task.Expect.FAIL)
+                .writeAll();
+        checkFound(result.getOutput(Task.OutputKind.DIRECT),
+                "javadoc: cannot specify both --source-path and --module-source-path");
+        checkFound(result.getOutput(Task.OutputKind.DIRECT),
+                "1 error");
+    }
+
     private void checkFound(String log, String... expect) {
         for (String e : expect) {
             if (!log.contains(e)) {
--- a/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApi.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApi.java	Fri Mar 03 09:05:36 2017 +0000
@@ -20,42 +20,135 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-
 package sampleapi;
 
-import java.io.File;
-import java.io.FilenameFilter;
+import com.sun.source.util.JavacTask;
+import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.api.JavacTool;
+import com.sun.tools.javac.util.Context;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import static java.util.stream.Collectors.toList;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+import sampleapi.generator.ModuleGenerator;
 
 import sampleapi.generator.PackageGenerator;
 
 public class SampleApi {
 
-    PackageGenerator pkgGen = new PackageGenerator();
+    private final Context ctx;
+    private final List<ModuleGenerator> modules = new ArrayList<>();
 
-    public void generate(File resDir, File outDir) throws Fault {
-        FilenameFilter filter = (dir, name) -> { return name.endsWith(".xml"); };
-        File[] resFiles = resDir.listFiles(filter);
-        for (File resFile : resFiles) {
-            pkgGen.processDataSet(resFile);
-            pkgGen.generate(outDir);
-        }
+    public SampleApi() {
+        JavacTool jt = JavacTool.create();
+        JavacTask task = jt.getTask(null, null, null, null, null, null);
+        ctx = ((JavacTaskImpl) task).getContext();
     }
 
-    public void generate(Path res, Path dir) throws Fault {
-        generate(res.toFile(), dir.toFile());
+    public static SampleApi load(Path resDir)
+            throws ParserConfigurationException, IOException, SAXException {
+        SampleApi result = new SampleApi();
+        System.out.println("Loading resources from " + resDir);
+        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+        DocumentBuilder builder = factory.newDocumentBuilder();
+        Files.list(resDir)
+                .peek(f -> System.out.println(f.getFileName()))
+                .filter(f -> f.getFileName().toString().endsWith(".xml"))
+                .peek(f -> System.out.println(f.getFileName()))
+                .forEach(resFile -> {
+                    try (InputStream is = Files.newInputStream(resFile)) {
+                        Document document = builder.parse(is);
+                        NodeList moduleElements = document.getElementsByTagName("module");
+                        for (int i = 0; i < moduleElements.getLength(); i++) {
+                            result.modules.add(ModuleGenerator
+                                    .load((Element) moduleElements.item(i)));
+                        }
+                    } catch (IOException ex) {
+                        throw new UncheckedIOException(ex);
+                    } catch (SAXException ex) {
+                        throw new RuntimeException(ex);
+                    }
+                });
+        return result;
     }
 
-    public void generate(String res, String dir) throws Fault {
-        generate(new File(res), new File(dir));
+    public Context getContext() {
+        return ctx;
     }
 
-    public static class Fault extends Exception {
-        public Fault(String msg) {
-            super(msg);
+    public List<ModuleGenerator> getModules() {
+        return modules;
+    }
+
+
+    public void generate(Path outDir) {
+        //resolveIDs(modules);
+        modules.forEach(m -> {
+            try {
+                m.generate(outDir, this);
+            } catch (IOException ex) {
+                throw new UncheckedIOException(ex);
+            }
+        });
+    }
+
+    public void generate(String dir)
+            throws ParserConfigurationException, IOException, SAXException {
+        generate(Paths.get(dir));
+    }
+
+    public ModuleGenerator moduleById(String id) {
+        String real_id = getId(id);
+        return modules.stream()
+                            .filter(m -> m.id.equals(real_id))
+                            .findAny().orElseThrow(() -> new IllegalStateException("No module with id: " + real_id));
+    }
+
+    public PackageGenerator packageById(String id) {
+        String real_id = getId(id);
+        return modules.stream()
+                .flatMap(m -> m.packages.stream())
+                .filter(p -> p.id.equals(real_id)).findAny()
+                .orElseThrow(() -> new IllegalStateException("No package with id: " + real_id));
+    }
+
+    public String classById(String id) {
+        String real_id = getId(id);
+        return modules.stream()
+                .flatMap(m -> m.packages.stream())
+                .peek(p -> System.out.println(p.packageName + " " + p.idBases.size()))
+                .flatMap(p -> p.idBases.entrySet().stream()
+                    .filter(e -> e.getKey().equals(real_id))
+                    .map(e -> p.packageName + "." + e.getValue().name.toString())
+                    .peek(System.out::println))
+                .findAny().orElseThrow(() -> new IllegalStateException("No class with id: " + id));
+    }
+
+    public boolean isId(String name) {
+        return name.startsWith("$");
+    }
+
+    public boolean isIdEqual(String name, String id) {
+        return isId(name) && getId(name).equals(id);
+    }
+
+    public String getId(String name) {
+        if(!isId(name)) {
+            throw new IllegalStateException("Not an id: " + name);
         }
-        public Fault(String msg, Throwable th) {
-            super(msg, th);
-        }
+        return name.substring(1);
     }
 }
--- a/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApiDefaultRunner.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApiDefaultRunner.java	Fri Mar 03 09:05:36 2017 +0000
@@ -23,9 +23,9 @@
 
 package sampleapi;
 
-import java.io.File;
-
-import sampleapi.SampleApi.Fault;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 
 public class SampleApiDefaultRunner {
 
@@ -132,12 +132,12 @@
             return 1;
         }
 
-        File resDir = new File(resDirName);
-        File outDir = new File(outDirName);
-        outDir.mkdirs();
+        Path resDir = Paths.get(resDirName);
+        Path outDir = Paths.get(outDirName);
+        Files.createDirectories(outDir);
         SampleApi apiGen = new SampleApi();
 
-        apiGen.generate(resDir, outDir);
+        apiGen.load(resDir).generate(outDir);
 
         return 0;
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/ModuleGenerator.java	Fri Mar 03 09:05:36 2017 +0000
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package sampleapi.generator;
+
+import com.sun.source.tree.ModuleTree.ModuleKind;
+import com.sun.tools.javac.code.Symbol;
+import com.sun.tools.javac.parser.Scanner;
+import com.sun.tools.javac.parser.ScannerFactory;
+import com.sun.tools.javac.parser.Tokens;
+import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.tree.JCTree.JCDirective;
+import com.sun.tools.javac.tree.JCTree.JCExpression;
+import com.sun.tools.javac.tree.TreeMaker;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Names;
+import com.sun.tools.javac.util.ListBuffer;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.ArrayList;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import sampleapi.SampleApi;
+import sampleapi.util.PoorDocCommentTable;
+
+import static com.sun.tools.javac.parser.Tokens.Comment.CommentStyle.JAVADOC;
+
+/**
+ *
+ * This class is responsible for loading module description from an XML and then generating the
+ * <code>module-info.java</code>. It is using {@link PackageGenerator} class for parsing content of the module.
+ */
+public class ModuleGenerator {
+
+    private static final String UNNAMED = "UNNAMED";
+    private static final String MODULE_INFO = "module-info.java";
+
+    public String name;
+    public String id;
+    public ModuleKind kind;
+    public final List<Exports> exportss = new ArrayList<>();
+    public final List<Opens> openss = new ArrayList<>();
+    public final List<Requires> requiress = new ArrayList<>();
+    public final List<Uses> usess = new ArrayList<>();
+    public final List<Provides> providess = new ArrayList<>();
+    public final List<PackageGenerator> packages = new ArrayList<>();
+
+    private ModuleGenerator() {
+    }
+
+    public static ModuleGenerator load(Element rootElement) {
+        ModuleGenerator result = new ModuleGenerator();
+        result.name = rootElement.getAttribute("name");
+        result.id = rootElement.getAttribute("id");
+        String kind = rootElement.getAttribute("kind");
+        result.kind = kind.isEmpty() ? ModuleKind.STRONG :
+                ModuleKind.valueOf(kind.toUpperCase());
+        //exports
+        NodeList exportsList = rootElement.getElementsByTagName("exports");
+        for (int i = 0; i < exportsList.getLength(); i++) {
+            Element exportsEl = (Element) exportsList.item(i);
+            Exports exports = new Exports(exportsEl.getAttribute("package"));
+            NodeList toList = exportsEl.getElementsByTagName("to");
+            for (int j = 0; j < toList.getLength(); j++) {
+                Element toElement = (Element) toList.item(j);
+                exports.modules.add(toElement.getAttribute("module"));
+            }
+            result.exportss.add(exports);
+        }
+        //opens
+        NodeList opensList = rootElement.getElementsByTagName("opens");
+        for (int i = 0; i < opensList.getLength(); i++) {
+            Element opensEl = (Element) opensList.item(i);
+            Opens opens = new Opens(opensEl.getAttribute("package"));
+            NodeList toList = opensEl.getElementsByTagName("to");
+            for (int j = 0; j < toList.getLength(); j++) {
+                Element toElement = (Element) toList.item(j);
+                opens.modules.add(toElement.getAttribute("module"));
+            }
+            result.openss.add(opens);
+        }
+        //requires
+        NodeList requiresList = rootElement.getElementsByTagName("requires");
+        for (int i = 0; i < requiresList.getLength(); i++) {
+            Element requiresEl = (Element) requiresList.item(i);
+            result.requiress.add(new Requires(requiresEl.getAttribute("module"),
+                    Boolean.parseBoolean(requiresEl.getAttribute("transitive")),
+                    Boolean.parseBoolean(requiresEl.getAttribute("static"))));
+        }
+        //uses
+        NodeList usesList = rootElement.getElementsByTagName("uses");
+        for (int i = 0; i < usesList.getLength(); i++) {
+            Element usesEl = (Element) usesList.item(i);
+            result.usess.add(new Uses(usesEl.getAttribute("service")));
+        }
+        //provides
+        NodeList providesList = rootElement.getElementsByTagName("provides");
+        for (int i = 0; i < providesList.getLength(); i++) {
+            Element providesEl = (Element) providesList.item(i);
+            Provides provides = new Provides(providesEl.getAttribute("service"));
+            NodeList implList = providesEl.getElementsByTagName("implementation");
+            for (int j = 0; j < implList.getLength(); j++) {
+                Element implElement = (Element) implList.item(j);
+                provides.implementations.add(implElement.getAttribute("class"));
+            }
+            result.providess.add(provides);
+        }
+        //packages
+        NodeList packagesList = rootElement.getElementsByTagName("package");
+        for (int i = 0; i < packagesList.getLength(); i++) {
+            result.packages.add(PackageGenerator
+                    .processDataSet((Element) packagesList.item(i)));
+        }
+        return result;
+    }
+
+    public void generate(Path outDir, SampleApi api) throws IOException {
+        Files.createDirectories(outDir);
+        Path moduleSourceDir;
+        if (!name.equals(UNNAMED)) {
+            moduleSourceDir = outDir.resolve(name);
+            Files.createDirectory(moduleSourceDir);
+            generateModuleInfo(moduleSourceDir, api);
+        } else {
+            moduleSourceDir = outDir;
+        }
+        packages.forEach(pkg -> pkg.generate(moduleSourceDir));
+    }
+
+    private void generateModuleInfo(Path moduleSourceDir, SampleApi api) throws IOException {
+        TreeMaker make = TreeMaker.instance(api.getContext());
+        Names names = Names.instance(api.getContext());
+        JCTree.JCExpression modQual = make.QualIdent(
+                new Symbol.ModuleSymbol(names.fromString(name), null));
+        ListBuffer<JCDirective> exportsBuffer = new ListBuffer<>();
+        exportss.forEach(e -> {
+            ListBuffer<JCExpression> modulesBuffer = new ListBuffer<>();
+            e.modules.stream()
+                    .map(m -> api.isId(m) ? api.moduleById(m).name : m)
+                    .forEach(m -> {
+                modulesBuffer.add(make.Ident(
+                        names.fromString(m)));
+            });
+            exportsBuffer.add(make.Exports(
+                    make.Ident(names.fromString(api.isId(e.pkg) ?
+                            api.packageById(e.pkg).packageName : e.pkg)),
+                    (modulesBuffer.size() > 0) ? modulesBuffer.toList() : null));
+        });
+        openss.forEach(o -> {
+            ListBuffer<JCExpression> modulesBuffer = new ListBuffer<>();
+            o.modules.stream()
+                    .map(m -> api.isId(m) ? api.moduleById(m).name : m)
+                    .forEach(m -> {
+                modulesBuffer.add(make.Ident(
+                        names.fromString(m)));
+            });
+            exportsBuffer.add(make.Opens(
+                    make.Ident(names.fromString(api.isId(o.pkg) ?
+                            api.packageById(o.pkg).packageName : o.pkg)),
+                    (modulesBuffer.size() > 0) ? modulesBuffer.toList() : null));
+        });
+        ListBuffer<JCDirective> requiresBuffer = new ListBuffer<>();
+        requiress.forEach(r -> requiresBuffer.add(make.Requires(
+                r.transitive, r.statc,
+                make.Ident(names.fromString(api.isId(r.module)
+                        ? api.moduleById(r.module).name : r.module)))));
+        ListBuffer<JCDirective> usesBuffer = new ListBuffer<>();
+        usess.forEach(u -> usesBuffer
+                .add(make.Uses(make.Ident(names.fromString(api.isId(u.service)
+                        ? api.classById(u.service) : u.service)))));
+        ListBuffer<JCDirective> providesBuffer = new ListBuffer<>();
+        providess.forEach(p -> {
+            ListBuffer<JCExpression> implementationsBuffer = new ListBuffer<>();
+            p.implementations.stream()
+                    .map(c -> api.isId(c) ? api.classById(c) : c)
+                    .forEach(i -> {
+                implementationsBuffer.add(make.Ident(names.fromString(i)));
+            });
+            providesBuffer.add(make.Provides(
+                make.Ident(names.fromString(api.isId(p.service) ?
+                        api.classById(p.service) : p.service)),
+                implementationsBuffer.toList()));
+        });
+        ListBuffer<JCDirective> fullList = new ListBuffer<>();
+        fullList.addAll(exportsBuffer.toList());
+        fullList.addAll(requiresBuffer.toList());
+        fullList.addAll(usesBuffer.toList());
+        fullList.addAll(providesBuffer.toList());
+        JCTree.JCModuleDecl mod = make.ModuleDef(
+                make.Modifiers(0), //TODO how to support this?
+                kind, modQual, fullList.toList());
+        ListBuffer<JCTree> top = new ListBuffer<>();
+        top.add(mod);
+        JCTree.JCCompilationUnit compilationUnit = make.TopLevel(top.toList());
+        try (OutputStream module_info = Files.newOutputStream(moduleSourceDir.resolve(MODULE_INFO))) {
+            module_info.write(compilationUnit.toString().getBytes());
+        }
+    }
+
+
+    public static class Requires {
+        public String module;
+        public boolean transitive;
+        public boolean statc;
+
+        private Requires(String module, boolean transitive, boolean statc) {
+            this.module = module;
+            this.transitive = transitive;
+            this.statc = this.statc;
+        }
+    }
+
+    public static class Exports {
+        public final String pkg;
+        public final List<String> modules = new ArrayList<>();
+
+        private Exports(String pkg) {
+            this.pkg = pkg;
+        }
+    }
+
+    public static class Opens {
+        public final String pkg;
+        public final List<String> modules = new ArrayList<>();
+
+        private Opens(String pkg) {
+            this.pkg = pkg;
+        }
+    }
+
+    public static class Uses {
+        public final String service;
+
+        private Uses(String service) {
+            this.service = service;
+        }
+    }
+
+    public static class Provides {
+        public final String service;
+        public final List<String> implementations = new ArrayList<>();
+
+        private Provides(String service) {
+            this.service = service;
+        }
+    }
+}
--- a/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/PackageGenerator.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/PackageGenerator.java	Fri Mar 03 09:05:36 2017 +0000
@@ -25,17 +25,11 @@
 
 import java.io.File;
 import java.io.FileWriter;
-import java.io.InputStream;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
-import org.xml.sax.SAXException;
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -56,18 +50,19 @@
 import com.sun.tools.javac.code.TypeTag;
 import com.sun.tools.javac.code.Symbol;
 import com.sun.tools.javac.code.Symtab;
+import java.nio.file.Path;
 
 import sampleapi.util.*;
-import sampleapi.SampleApi.Fault;
 
 public class PackageGenerator {
 
-    String packageName;
+    public String packageName;
     String packageDirName;
+    public String id;
 
     ArrayList<JCCompilationUnit> topLevels;
     Map<String, Integer> nameIndex;
-    Map<String, JCClassDecl> idBases;
+    public Map<String, JCClassDecl> idBases;
     Map<String, JCAnnotation> idAnnos;
 
     TreeMaker make;
@@ -92,48 +87,43 @@
 
     boolean isDataSetProcessed = false;
 
-    public void processDataSet(File dsFile) throws Fault {
-        isDataSetProcessed = true;
-        topLevels = new ArrayList<>();
-        nameIndex = new HashMap<>();
-        idBases =  new HashMap<>();
-        idAnnos =  new HashMap<>();
-        fx = false;
+    public static PackageGenerator processDataSet(Element rootElement) {
+        PackageGenerator result = new PackageGenerator();
+        result.isDataSetProcessed = true;
+        result.topLevels = new ArrayList<>();
+        result.nameIndex = new HashMap<>();
+        result.idBases = new HashMap<>();
+        result.idAnnos = new HashMap<>();
+        result.fx = false;
+
+        if (!rootElement.getTagName().equals("package")) {
+            throw new IllegalStateException("Unexpected tag name: "
+                    + rootElement.getTagName());
+        }
+        result.packageName = rootElement.getAttribute("name");
+        result.id = rootElement.getAttribute("id");
+        result.fx = "fx".equals(rootElement.getAttribute("style"));
+        result.packageDirName = result.packageName.replace('.', '/');
+
+        // process nodes (toplevels)
+        NodeList nodeList = rootElement.getChildNodes();
+        for (int i = 0; i < nodeList.getLength(); i++) {
+            Node node = nodeList.item(i);
+
+            if (!(node instanceof Element)) {
+                continue;
+            }
+            result.processTopLevel((Element) node);
+        }
+        return result;
+    }
+
+    public void generate(Path outDir) {
+        if (!isDataSetProcessed)
+            throw new RuntimeException("No Data Set processed");
 
         try {
-            InputStream is = new FileInputStream(dsFile);
-
-            DocumentBuilder builder = factory.newDocumentBuilder();
-            Document document = builder.parse(is);
-
-            Element rootElement = document.getDocumentElement();
-            if (!rootElement.getTagName().equals("package"))
-                throw new IllegalStateException("Unexpected tag name: "
-                        + rootElement.getTagName());
-            packageName = rootElement.getAttribute("name");
-            fx = "fx".equals(rootElement.getAttribute("style"));
-            packageDirName = packageName.replace('.', '/');
-
-            // process nodes (toplevels)
-            NodeList nodeList = rootElement.getChildNodes();
-            for (int i = 0; i < nodeList.getLength(); i++) {
-                Node node = nodeList.item(i);
-
-                if (!(node instanceof Element))
-                    continue;
-                processTopLevel((Element) node);
-            }
-        } catch (ParserConfigurationException | SAXException | IOException e) {
-            throw new Fault("Error parsing dataset " + dsFile, e);
-        }
-    }
-
-    public void generate(File outDir) throws Fault {
-        if (!isDataSetProcessed)
-            throw new Fault("No Data Set processed");
-
-        try {
-            File pkgDir = new File(outDir, packageDirName);
+            File pkgDir = new File(outDir.toFile(), packageDirName);
             pkgDir.mkdirs();
 
             for (JCCompilationUnit decl : topLevels) {
@@ -168,7 +158,7 @@
             writer.flush();
             writer.close();
         } catch (IOException e) {
-            throw new Fault("Error writing output");
+            throw new RuntimeException("Error writing output");
         }
     }
 
@@ -211,6 +201,7 @@
         String baseName = baseTag.getAttribute("basename");
         String typeParam = baseTag.getAttribute("tparam");
         String baseId = baseTag.getAttribute("id");
+        System.out.println("Found class id: " + baseId);
 
         long kindFlag = 0;
         switch (kind) {
--- a/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/util/SimpleMultiplier.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/util/SimpleMultiplier.java	Fri Mar 03 09:05:36 2017 +0000
@@ -72,8 +72,8 @@
     }
 
     public void initIterator() {
+        size = 1;
         if (!valueSpace.isEmpty()) {
-            size = 1;
             for (int i = 0; i < valueSpace.size(); i++)
                 size *= valueSpace.get(i).size();
         }
--- a/test/jdk/javadoc/tool/sampleapi/res/fx.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/res/fx.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -21,25 +21,27 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.fx" style="fx">
-
-    <class basename="FXClass">
-        <modifier>public</modifier>
-        <member>
-            <field basename="id">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.fx" style="fx">
+            <class basename="FXClass">
                 <modifier>public</modifier>
-                <type>int|boolean</type>
-            </field>
-            <method basename="setProp">
-                <modifier>public|protected|private</modifier>
-                <param>int|String</param>
-                <type>void</type>
-            </method>
-            <method basename="getProp">
-                <modifier>public|protected|private</modifier>
-                <type>int|int|String</type>
-            </method>
-        </member>
-    </class>
-
-</package>
+                <member>
+                    <field basename="id">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </field>
+                    <method basename="setProp">
+                        <modifier>public|protected|private</modifier>
+                        <param>int|String</param>
+                        <type>void</type>
+                    </method>
+                    <method basename="getProp">
+                        <modifier>public|protected|private</modifier>
+                        <type>int|int|String</type>
+                    </method>
+                </member>
+            </class>
+        </package>
+    </module>
+</sampleapi>
--- a/test/jdk/javadoc/tool/sampleapi/res/simple.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/res/simple.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -21,509 +21,512 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.simple">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.simple">
+            <class basename="SampleClass" id="baseclass">
+                <modifier>public</modifier>
+                <modifier>none|abstract</modifier>
+                <member>
+                    <field basename="field">
+                        <modifier>none|public</modifier>
+                        <modifier>none|static</modifier>
+                        <modifier>none|final</modifier>
+                        <type>boolean|int|String</type>
+                    </field>
+                    <field basename="field">
+                        <modifier>protected|private</modifier>
+                        <type>String</type>
+                    </field>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>none|int|int,boolean|int,String</param>
+                    </constructor>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                        <throw>NullPointerException</throw>
+                        <throw>SampleException0</throw>
+                    </constructor>
+                    <method basename="set">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>int|boolean|String</type>
+                    </method>
+                    <method basename="doSomething">
+                        <modifier>public</modifier>
+                        <type>void|int</type>
+                        <param>none|int|Object,int</param>
+                        <throw>NullPointerException</throw>
+                        <throw>ArithmeticException</throw>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="SampleClass" id="baseclass">
-        <modifier>public</modifier>
-        <modifier>none|abstract</modifier>
-        <member>
-            <field basename="field">
-                <modifier>none|public</modifier>
-                <modifier>none|static</modifier>
-                <modifier>none|final</modifier>
-                <type>boolean|int|String</type>
-            </field>
-            <field basename="field">
-                <modifier>protected|private</modifier>
-                <type>String</type>
-            </field>
-            <constructor>
+            <class basename="Derived">
                 <modifier>public</modifier>
-                <param>none|int|int,boolean|int,String</param>
-            </constructor>
-            <constructor>
+                <extend id="baseclass"/>
+                <member>
+                    <field basename="myField">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </field>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>none|int|int,boolean|int,String</param>
+                    </constructor>
+                    <method basename="myGet">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="SampleSerial">
+                <import>java.io.Serializable</import>
                 <modifier>public</modifier>
-                <param>String</param>
-                <throw>NullPointerException</throw>
-                <throw>SampleException0</throw>
-            </constructor>
-            <method basename="set">
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>int</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>int|boolean|String</type>
-            </method>
-            <method basename="doSomething">
-                <modifier>public</modifier>
-                <type>void|int</type>
-                <param>none|int|Object,int</param>
-                <throw>NullPointerException</throw>
-                <throw>ArithmeticException</throw>
-            </method>
-        </member>
-    </class>
-
-    <class basename="Derived">
-        <modifier>public</modifier>
-        <extend id="baseclass"/>
-        <member>
-            <field basename="myField">
-                <modifier>public</modifier>
-                <type>int|boolean</type>
-            </field>
-            <constructor>
-                <modifier>public</modifier>
-                <param>none|int|int,boolean|int,String</param>
-            </constructor>
-            <method basename="myGet">
-                <modifier>public</modifier>
-                <type>int|boolean</type>
-            </method>
-        </member>
-    </class>
-
-    <class basename="SampleSerial">
-        <import>java.io.Serializable</import>
-        <modifier>public</modifier>
-        <implement ref="Serializable"/>
-        <member>
-            <field basename="specialData">
-                <modifier>private|none|public</modifier>
-                <type>boolean|int|String</type>
-            </field>
-        </member>
-    </class>
-
-    <class basename="SampleSerial">
-        <import>java.io.Serializable</import>
-        <import>java.io.ObjectStreamField</import>
-        <modifier>public</modifier>
-        <implement ref="Serializable"/>
-        <member>
-            <serialfield basename="serialField">String,Long,Boolean</serialfield>
-            <method basename="justToBeHere">
-                <modifier>public</modifier>
-                <type>String|long|boolean</type>
-            </method>
-        </member>
-    </class>
-
-    <class basename="SampleSerial">
-        <import>java.io.Serializable</import>
-        <import>java.io.ObjectOutputStream</import>
-        <import>java.io.ObjectOutput</import>
-        <import>java.io.IOException</import>
-        <import>java.io.ObjectStreamException</import>
-        <modifier>public</modifier>
-        <implement ref="Serializable"/>
-        <member>
-            <method name="writeObject">
-                <modifier>private</modifier>
-                <param>ObjectOutputStream</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-            <method name="writeExternal">
-                <modifier>public</modifier>
-                <param>ObjectOutput</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-            <method name="writeReplace">
-                <modifier>protected</modifier>
-                <param>none</param>
-                <type>Object</type>
-                <throw>ObjectStreamException</throw>
-            </method>
-            <method name="writeSomethingElse">
-                <modifier>public</modifier>
-                <param>Object</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-        </member>
-    </class>
-
-    <class basename="SampleSerial">
-        <import>java.io.Serializable</import>
-        <import>java.io.ObjectInputStream</import>
-        <import>java.io.ObjectInput</import>
-        <import>java.io.IOException</import>
-        <import>java.io.ObjectStreamException</import>
-        <modifier>public</modifier>
-        <implement ref="Serializable"/>
-        <member>
-            <method name="readObject">
-                <modifier>private</modifier>
-                <param>ObjectInputStream</param>
-                <type>void</type>
-                <throw>IOException</throw>
-                <throw>ClassNotFoundException</throw>
-            </method>
-            <method name="readExternal">
-                <modifier>public</modifier>
-                <param>ObjectInput</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-            <method name="readResolve">
-                <modifier>protected</modifier>
-                <param>none</param>
-                <type>Object</type>
-                <throw>ObjectStreamException</throw>
-            </method>
-            <method name="readSomethingElse">
-                <modifier>public</modifier>
-                <param>Object</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-        </member>
-    </class>
-
-    <class basename="Container">
-        <modifier>public</modifier>
-        <member>
-            <class basename="Inner">
-                <modifier>public</modifier>
+                <implement ref="Serializable"/>
                 <member>
-                    <field basename="value">
-                        <modifier>public</modifier>
-                        <type>int</type>
+                    <field basename="specialData">
+                        <modifier>private|none|public</modifier>
+                        <type>boolean|int|String</type>
                     </field>
                 </member>
             </class>
-            <class basename="Nested">
+
+            <class basename="SampleSerial">
+                <import>java.io.Serializable</import>
+                <import>java.io.ObjectStreamField</import>
                 <modifier>public</modifier>
-                <modifier>static</modifier>
+                <implement ref="Serializable"/>
+                <member>
+                    <serialfield basename="serialField">String,Long,Boolean</serialfield>
+                    <method basename="justToBeHere">
+                        <modifier>public</modifier>
+                        <type>String|long|boolean</type>
+                    </method>
+                </member>
             </class>
-            <interface basename="EventListener">
+
+            <class basename="SampleSerial">
+                <import>java.io.Serializable</import>
+                <import>java.io.ObjectOutputStream</import>
+                <import>java.io.ObjectOutput</import>
+                <import>java.io.IOException</import>
+                <import>java.io.ObjectStreamException</import>
                 <modifier>public</modifier>
-                <modifier>static</modifier>
+                <implement ref="Serializable"/>
                 <member>
-                    <method basename="onEvent">
-                         <modifier>public</modifier>
-                         <type>void</type>
+                    <method name="writeObject">
+                        <modifier>private</modifier>
+                        <param>ObjectOutputStream</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                    <method name="writeExternal">
+                        <modifier>public</modifier>
+                        <param>ObjectOutput</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                    <method name="writeReplace">
+                        <modifier>protected</modifier>
+                        <param>none</param>
+                        <type>Object</type>
+                        <throw>ObjectStreamException</throw>
+                    </method>
+                    <method name="writeSomethingElse">
+                        <modifier>public</modifier>
+                        <param>Object</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="SampleSerial">
+                <import>java.io.Serializable</import>
+                <import>java.io.ObjectInputStream</import>
+                <import>java.io.ObjectInput</import>
+                <import>java.io.IOException</import>
+                <import>java.io.ObjectStreamException</import>
+                <modifier>public</modifier>
+                <implement ref="Serializable"/>
+                <member>
+                    <method name="readObject">
+                        <modifier>private</modifier>
+                        <param>ObjectInputStream</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                        <throw>ClassNotFoundException</throw>
+                    </method>
+                    <method name="readExternal">
+                        <modifier>public</modifier>
+                        <param>ObjectInput</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                    <method name="readResolve">
+                        <modifier>protected</modifier>
+                        <param>none</param>
+                        <type>Object</type>
+                        <throw>ObjectStreamException</throw>
+                    </method>
+                    <method name="readSomethingElse">
+                        <modifier>public</modifier>
+                        <param>Object</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="Container">
+                <modifier>public</modifier>
+                <member>
+                    <class basename="Inner">
+                        <modifier>public</modifier>
+                        <member>
+                            <field basename="value">
+                                <modifier>public</modifier>
+                                <type>int</type>
+                            </field>
+                        </member>
+                    </class>
+                    <class basename="Nested">
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                    </class>
+                    <interface basename="EventListener">
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                        <member>
+                            <method basename="onEvent">
+                                <modifier>public</modifier>
+                                <type>void</type>
+                            </method>
+                        </member>
+                    </interface>
+                </member> 
+            </class>
+
+            <!-- Errors and exceptions -->
+            <class basename="SampleError">
+                <modifier>public</modifier>
+                <extend ref="java.lang.Error"/>
+                <member>
+                    <field basename="errorInfo">
+                        <modifier>private</modifier>
+                        <type>boolean|int|String</type>
+                    </field>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                    </constructor>
+                    <method basename="getSampleData">
+                        <modifier>public</modifier>
+                        <type>int|String</type>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="SampleException">
+                <modifier>public</modifier>
+                <extend ref="java.lang.Exception"/>
+                <member>
+                    <field basename="exceptionInfo">
+                        <modifier>private</modifier>
+                        <type>boolean|int|String</type>
+                    </field>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                    </constructor>
+                    <method basename="getSampleData">
+                        <modifier>public</modifier>
+                        <type>int|String</type>
+                    </method>
+                </member>
+            </class>
+
+            <interface basename="SampleInterface" id="baseinterface">
+                <modifier>public|none</modifier>
+                <member>
+                    <method basename="method">
+                        <modifier>public</modifier>
+                        <type>void|int|Object</type>
                     </method>
                 </member>
             </interface>
-        </member> 
-    </class>
 
-    <!-- Errors and exceptions -->
-    <class basename="SampleError">
-        <modifier>public</modifier>
-        <extend ref="java.lang.Error"/>
-        <member>
-            <field basename="errorInfo">
-                <modifier>private</modifier>
-                <type>boolean|int|String</type>
-            </field>
-            <constructor>
+            <class basename="Implementor">
                 <modifier>public</modifier>
-                <param>String</param>
-            </constructor>
-            <method basename="getSampleData">
+                <implement id="baseinterface"/>
+                <member>
+                    <field basename="myField">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </field>
+                    <method basename="myGet">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="GenericClass" tparam="T">
+                <import>java.util.List</import>
                 <modifier>public</modifier>
-                <type>int|String</type>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>T</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>T</type>
+                        <param>int</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>List&lt;T&gt;</type>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="SampleException">
-        <modifier>public</modifier>
-        <extend ref="java.lang.Exception"/>
-        <member>
-            <field basename="exceptionInfo">
-                <modifier>private</modifier>
-                <type>boolean|int|String</type>
-            </field>
-            <constructor>
+            <class basename="GenericClass" tparam="K,V">
+                <import>java.util.Set</import>
+                <import>java.util.List</import>
+                <import>java.util.Map</import>
                 <modifier>public</modifier>
-                <param>String</param>
-            </constructor>
-            <method basename="getSampleData">
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>K,V</param>
+                    </method>
+                    <method basename="putMap">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>Map&lt;K,V&gt;</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>V</type>
+                        <param>K</param>
+                    </method>
+                    <method basename="getV">
+                        <modifier>public</modifier>
+                        <type>Set&lt;V&gt;|List&lt;V&gt;</type>
+                    </method>
+                    <method basename="getK">
+                        <modifier>public</modifier>
+                        <type>Set&lt;K&gt;|List&lt;K&gt;</type>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="GenericClass" tparam="M,N,O">
+                <import>java.util.Set</import>
+                <import>java.util.List</import>
+                <import>java.util.Map</import>
                 <modifier>public</modifier>
-                <type>int|String</type>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>Set&lt;M&gt;|List&lt;M&gt;</type>
+                        <param>Map&lt;N,O&gt;</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>Set&lt;N&gt;|List&lt;N&gt;</type>
+                        <param>Map&lt;M,O&gt;</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>Set&lt;O&gt;|List&lt;O&gt;</type>
+                        <param>Map&lt;M,N&gt;</param>
+                    </method>
+                </member>
+            </class>
 
-    <interface basename="SampleInterface" id="baseinterface">
-        <modifier>public|none</modifier>
-        <member>
-            <method basename="method">
+            <class basename="GenericUtil"> <!-- public static generic methods like Collections -->
+                <import>java.util.Set</import>
+                <import>java.util.List</import>
+                <import>java.util.Map</import>
+                <import>java.util.function.Supplier</import>
                 <modifier>public</modifier>
-                <type>void|int|Object</type>
-            </method>
-        </member>
-    </interface>
+                <member>
+                    <method tparam="E" basename="getSomething">
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                        <type>Set&lt;? extends E&gt;|List&lt;? extends E&gt;</type>
+                    </method>
+                    <method tparam="V,K" basename="getMore">
+                        <modifier>public|private</modifier>
+                        <modifier>static</modifier>
+                        <type>Map&lt;V,K&gt;</type>
+                    </method>
+                    <method tparam="E" basename="doSomething">
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                        <type>void</type>
+                        <param>E</param>
+                    </method>
+                    <method tparam="X extends Throwable" basename="orElseThrow">
+                        <modifier>public|private</modifier>
+                        <modifier>static</modifier>
+                        <type>X</type>
+                        <param>Supplier&lt;? extends X&gt;</param>
+                        <throw>X</throw>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="Implementor">
-        <modifier>public</modifier>
-        <implement id="baseinterface"/>
-        <member>
-            <field basename="myField">
+            <enum basename="SampleEnum">
                 <modifier>public</modifier>
-                <type>int|boolean</type>
-            </field>
-            <method basename="myGet">
+                <member>
+                    <constant basename="VALUE" count="3"/>
+                </member>
+            </enum>
+        
+            <enum basename="SampleEnum">
                 <modifier>public</modifier>
-                <type>int|boolean</type>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <constant basename="VALUE" count="2"/>
+                    <constant basename="NOVALUE" count="1"/>
+                    <field basename="field">
+                        <modifier>private</modifier>
+                        <type>int|String</type>
+                    </field>
+                    <method basename="method">
+                        <modifier>public</modifier>
+                        <type>void|String</type>
+                    </method>
+                </member>
+            </enum>
 
-    <class basename="GenericClass" tparam="T">
-        <import>java.util.List</import>
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
+            <annodecl id="documented">
+                <class>Documented</class>
+            </annodecl>
+
+            <annodecl id="reten-source">
+                <class>Retention</class>
+                <arg name="value" value="RetentionPolicy.SOURCE"/>
+            </annodecl>
+
+            <annodecl id="reten-class">
+                <class>Retention</class>
+                <arg name="value" value="RetentionPolicy.CLASS"/>
+            </annodecl>
+
+            <annodecl id="reten-runtime">
+                <class>Retention</class>
+                <arg name="value" value="RetentionPolicy.RUNTIME"/>
+            </annodecl>
+
+            <annodecl id="target-method">
+                <class>Target</class>
+                <arg value="ElementType.METHOD"/>
+            </annodecl>
+
+            <annodecl id="target-field">
+                <class>Target</class>
+                <arg value="ElementType.FIELD"/>
+            </annodecl>
+
+            <annodecl id="target-type">
+                <class>Target</class>
+                <arg value="{ElementType.TYPE, ElementType.TYPE_USE}"/>
+            </annodecl>
+
+            <annotation basename="AnnotatedAnno">
+                <import>java.lang.annotation.Documented</import>
+                <anno>@documented</anno>
                 <modifier>public</modifier>
-                <type>void</type>
-                <param>T</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>T</type>
-                <param>int</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>List&lt;T&gt;</type>
-            </method>
-        </member>
-    </class>
-
-    <class basename="GenericClass" tparam="K,V">
-        <import>java.util.Set</import>
-        <import>java.util.List</import>
-        <import>java.util.Map</import>
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>K,V</param>
-            </method>
-            <method basename="putMap">
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>Map&lt;K,V&gt;</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>V</type>
-                <param>K</param>
-            </method>
-            <method basename="getV">
-                <modifier>public</modifier>
-                <type>Set&lt;V&gt;|List&lt;V&gt;</type>
-            </method>
-            <method basename="getK">
-                <modifier>public</modifier>
-                <type>Set&lt;K&gt;|List&lt;K&gt;</type>
-            </method>
-        </member>
-    </class>
-
-    <class basename="GenericClass" tparam="M,N,O">
-        <import>java.util.Set</import>
-        <import>java.util.List</import>
-        <import>java.util.Map</import>
-        <modifier>public</modifier>
-        <member>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>Set&lt;M&gt;|List&lt;M&gt;</type>
-                <param>Map&lt;N,O&gt;</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>Set&lt;N&gt;|List&lt;N&gt;</type>
-                <param>Map&lt;M,O&gt;</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>Set&lt;O&gt;|List&lt;O&gt;</type>
-                <param>Map&lt;M,N&gt;</param>
-            </method>
-        </member>
-    </class>
-
-    <class basename="GenericUtil"> <!-- public static generic methods like Collections -->
-        <import>java.util.Set</import>
-        <import>java.util.List</import>
-        <import>java.util.Map</import>
-        <import>java.util.function.Supplier</import>
-        <modifier>public</modifier>
-        <member>
-            <method tparam="E" basename="getSomething">
-                <modifier>public</modifier>
-                <modifier>static</modifier>
-                <type>Set&lt;? extends E&gt;|List&lt;? extends E&gt;</type>
-            </method>
-            <method tparam="V,K" basename="getMore">
-                <modifier>public|private</modifier>
-                <modifier>static</modifier>
-                <type>Map&lt;V,K&gt;</type>
-            </method>
-            <method tparam="E" basename="doSomething">
-                <modifier>public</modifier>
-                <modifier>static</modifier>
-                <type>void</type>
-                <param>E</param>
-            </method>
-            <method tparam="X extends Throwable" basename="orElseThrow">
-                <modifier>public|private</modifier>
-                <modifier>static</modifier>
-                <type>X</type>
-                <param>Supplier&lt;? extends X&gt;</param>
-                <throw>X</throw>
-            </method>
-        </member>
-    </class>
-
-    <enum basename="SampleEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="VALUE" count="3"/>
-        </member>
-    </enum>
-        
-    <enum basename="SampleEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="VALUE" count="2"/>
-            <constant basename="NOVALUE" count="1"/>
-            <field basename="field">
-                <modifier>private</modifier>
-                <type>int|String</type>
-            </field>
-            <method basename="method">
-                <modifier>public</modifier>
-                <type>void|String</type>
-            </method>
-        </member>
-    </enum>
-
-    <annodecl id="documented">
-        <class>Documented</class>
-    </annodecl>
-
-    <annodecl id="reten-source">
-        <class>Retention</class>
-        <arg name="value" value="RetentionPolicy.SOURCE"/>
-    </annodecl>
-
-    <annodecl id="reten-class">
-        <class>Retention</class>
-        <arg name="value" value="RetentionPolicy.CLASS"/>
-    </annodecl>
-
-    <annodecl id="reten-runtime">
-        <class>Retention</class>
-        <arg name="value" value="RetentionPolicy.RUNTIME"/>
-    </annodecl>
-
-    <annodecl id="target-method">
-        <class>Target</class>
-        <arg value="ElementType.METHOD"/>
-    </annodecl>
-
-    <annodecl id="target-field">
-        <class>Target</class>
-        <arg value="ElementType.FIELD"/>
-    </annodecl>
-
-    <annodecl id="target-type">
-        <class>Target</class>
-        <arg value="{ElementType.TYPE, ElementType.TYPE_USE}"/>
-    </annodecl>
-
-    <annotation basename="AnnotatedAnno">
-        <import>java.lang.annotation.Documented</import>
-        <anno>@documented</anno>
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>boolean|String</type>
-            </method>
-        </member>
-    </annotation>
-
-    <annotation basename="AnnotatedAnno">
-        <import>java.lang.annotation.Retention</import>
-        <import>java.lang.annotation.RetentionPolicy</import>
-        <anno>@reten-source|@reten-class|@reten-runtime</anno>
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>int</type>
-            </method>
-        </member>
-    </annotation>
-
-    <class basename="AnnoContainer">
-        <import>java.lang.annotation.Retention</import>
-        <import>java.lang.annotation.RetentionPolicy</import>
-        <import>java.lang.annotation.Target</import>
-        <import>java.lang.annotation.ElementType</import>
-        <modifier>public</modifier>
-        <member>
-            <annotation basename="AnnotatedAnno">
-                <anno>@reten-source|@reten-class|@reten-runtime</anno>
-                <anno>@target-method|@target-field|@target-type</anno>
-                <modifier>public</modifier>
-                <modifier>static</modifier>
                 <member>
                     <method basename="value">
                         <modifier>public</modifier>
-                        <type>String</type>
+                        <type>boolean|String</type>
                     </method>
                 </member>
             </annotation>
-        </member>
-    </class>
 
-    <annodecl id="deprecated">
-        <class>Deprecated</class>
-    </annodecl>
+            <annotation basename="AnnotatedAnno">
+                <import>java.lang.annotation.Retention</import>
+                <import>java.lang.annotation.RetentionPolicy</import>
+                <anno>@reten-source|@reten-class|@reten-runtime</anno>
+                <modifier>public</modifier>
+                <member>
+                    <method basename="value">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </method>
+                </member>
+            </annotation>
 
-    <annodecl id="safevarargs">
-        <class>SafeVarargs</class>
-    </annodecl>
+            <class basename="AnnoContainer">
+                <import>java.lang.annotation.Retention</import>
+                <import>java.lang.annotation.RetentionPolicy</import>
+                <import>java.lang.annotation.Target</import>
+                <import>java.lang.annotation.ElementType</import>
+                <modifier>public</modifier>
+                <member>
+                    <annotation basename="AnnotatedAnno">
+                        <anno>@reten-source|@reten-class|@reten-runtime</anno>
+                        <anno>@target-method|@target-field|@target-type</anno>
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                        <member>
+                            <method basename="value">
+                                <modifier>public</modifier>
+                                <type>String</type>
+                            </method>
+                        </member>
+                    </annotation>
+                </member>
+            </class>
 
-    <annodecl id="suppresswarnings">
-        <class>SuppressWarnings</class>
-        <arg value="{&quot;unchecked&quot;, &quot;rawtypes&quot;}"/>
-    </annodecl>
+            <annodecl id="deprecated">
+                <class>Deprecated</class>
+            </annodecl>
 
-    <class basename="AnnotatedClass">
-        <modifier>public</modifier>
-        <member>
-            <method basename="deprecatedMethod">
-                <anno>@deprecated</anno>
+            <annodecl id="safevarargs">
+                <class>SafeVarargs</class>
+            </annodecl>
+
+            <annodecl id="suppresswarnings">
+                <class>SuppressWarnings</class>
+                <arg value="{&quot;unchecked&quot;, &quot;rawtypes&quot;}"/>
+            </annodecl>
+
+            <class basename="AnnotatedClass">
                 <modifier>public</modifier>
-                <type>void</type>
-            </method>
-            <method basename="safeVarargsMethod">
-                <anno>@safevarargs</anno>
-                <modifier>public</modifier>
-                <type>void|int</type>
-                <param>String...</param>
-            </method>
-            <method basename="suppressWarningsMethod">
-                <anno>@suppresswarnings</anno>
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>int|Object</param>
-            </method>
-        </member>
-    </class>
-</package>
+                <member>
+                    <method basename="deprecatedMethod">
+                        <anno>@deprecated</anno>
+                        <modifier>public</modifier>
+                        <type>void</type>
+                    </method>
+                    <method basename="safeVarargsMethod">
+                        <anno>@safevarargs</anno>
+                        <modifier>public</modifier>
+                        <type>void|int</type>
+                        <param>String...</param>
+                    </method>
+                    <method basename="suppressWarningsMethod">
+                        <anno>@suppresswarnings</anno>
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int|Object</param>
+                    </method>
+                </member>
+            </class>
+        </package>
+    </module>
+</sampleapi>
--- a/test/jdk/javadoc/tool/sampleapi/res/sub.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/res/sub.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -21,69 +21,72 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.simple.sub">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.simple.sub">
+            <class basename="SClass">
+                <modifier>public</modifier>
+                <modifier>none|abstract</modifier>
+                <implement>SInterface0</implement>
+                <member>
+                    <field basename="id">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </field>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                        <throw>SException0</throw>
+                    </method>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <param>int</param>
+                        <type>void</type>
+                        <throw>SException0</throw>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="SClass">
-        <modifier>public</modifier>
-        <modifier>none|abstract</modifier>
-        <implement>SInterface0</implement>
-        <member>
-            <field basename="id">
+            <class basename="SException">
                 <modifier>public</modifier>
-                <type>int</type>
-            </field>
-            <method basename="get">
+                <extend ref="java.lang.Exception"/>
+                <member>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                    </constructor>
+                </member>
+            </class>
+
+            <interface basename="SInterface">
                 <modifier>public</modifier>
-                <type>int</type>
-                <throw>SException0</throw>
-            </method>
-            <method basename="put">
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int</param>
+                    </method>
+                </member>
+            </interface>
+
+            <enum basename="SEnum">
                 <modifier>public</modifier>
-                <param>int</param>
-                <type>void</type>
-                <throw>SException0</throw>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <constant basename="ON" count="1"/>
+                    <constant basename="OFF" count="1"/>
+                </member>
+            </enum>
 
-    <class basename="SException">
-        <modifier>public</modifier>
-        <extend ref="java.lang.Exception"/>
-        <member>
-            <constructor>
+            <annotation basename="SAnno">
                 <modifier>public</modifier>
-                <param>String</param>
-            </constructor>
-        </member>
-    </class>
-
-    <interface basename="SInterface">
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>int</param>
-            </method>
-        </member>
-    </interface>
-
-    <enum basename="SEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="ON" count="1"/>
-            <constant basename="OFF" count="1"/>
-        </member>
-    </enum>
-
-    <annotation basename="SAnno">
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>boolean</type>
-            </method>
-        </member>
-    </annotation>
+                <member>
+                    <method basename="value">
+                        <modifier>public</modifier>
+                        <type>boolean</type>
+                    </method>
+                </member>
+            </annotation>
         
-</package>
+        </package>
+    </module>
+</sampleapi>
--- a/test/jdk/javadoc/tool/sampleapi/res/tiny.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/res/tiny.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -21,51 +21,53 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.tiny" module="sat.sampleapi">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.tiny" module="sat.sampleapi">
+            <class basename="TinyClass">
+                <modifier>public</modifier>
+                <modifier>none|abstract</modifier>
+                <member>
+                    <field basename="id">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </field>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="TinyClass">
-        <modifier>public</modifier>
-        <modifier>none|abstract</modifier>
-        <member>
-            <field basename="id">
+            <interface basename="TinyInterface">
                 <modifier>public</modifier>
-                <type>int</type>
-            </field>
-            <method basename="get">
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int</param>
+                    </method>
+                </member>
+            </interface>
+
+            <enum basename="TinyEnum">
                 <modifier>public</modifier>
-                <type>int</type>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <constant basename="YES" count="1"/>
+                    <constant basename="NO" count="1"/>
+                    <constant basename="MAYBE" count="1"/>
+                </member>
+            </enum>
 
-    <interface basename="TinyInterface">
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
+            <annotation basename="TinyAnno">
                 <modifier>public</modifier>
-                <type>void</type>
-                <param>int</param>
-            </method>
-        </member>
-    </interface>
-
-    <enum basename="TinyEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="YES" count="1"/>
-            <constant basename="NO" count="1"/>
-            <constant basename="MAYBE" count="1"/>
-        </member>
-    </enum>
-
-    <annotation basename="TinyAnno">
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>boolean</type>
-            </method>
-        </member>
-    </annotation>
-        
-</package>
+                <member>
+                    <method basename="value">
+                        <modifier>public</modifier>
+                        <type>boolean</type>
+                    </method>
+                </member>
+            </annotation>
+        </package>
+    </module>
+</sampleapi>
--- a/test/jdk/javadoc/tool/sampleapi/res/tinysub.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/res/tinysub.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -21,69 +21,71 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.tiny.sub" module="sat.sampleapi">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.tiny.sub" module="sat.sampleapi">
+            <class basename="TSClass">
+                <modifier>public</modifier>
+                <modifier>none|abstract</modifier>
+                <implement>TSInterface0</implement>
+                <member>
+                    <field basename="id">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </field>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                        <throw>TSException0</throw>
+                    </method>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <param>int</param>
+                        <type>void</type>
+                        <throw>TSException0</throw>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="TSClass">
-        <modifier>public</modifier>
-        <modifier>none|abstract</modifier>
-        <implement>TSInterface0</implement>
-        <member>
-            <field basename="id">
+            <class basename="TSException">
                 <modifier>public</modifier>
-                <type>int</type>
-            </field>
-            <method basename="get">
+                <extend ref="java.lang.Exception"/>
+                <member>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                    </constructor>
+                </member>
+            </class>
+
+            <interface basename="TSInterface">
                 <modifier>public</modifier>
-                <type>int</type>
-                <throw>TSException0</throw>
-            </method>
-            <method basename="put">
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int</param>
+                    </method>
+                </member>
+            </interface>
+
+            <enum basename="TSEnum">
                 <modifier>public</modifier>
-                <param>int</param>
-                <type>void</type>
-                <throw>TSException0</throw>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <constant basename="ON" count="1"/>
+                    <constant basename="OFF" count="1"/>
+                </member>
+            </enum>
 
-    <class basename="TSException">
-        <modifier>public</modifier>
-        <extend ref="java.lang.Exception"/>
-        <member>
-            <constructor>
+            <annotation basename="TSAnno">
                 <modifier>public</modifier>
-                <param>String</param>
-            </constructor>
-        </member>
-    </class>
-
-    <interface basename="TSInterface">
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>int</param>
-            </method>
-        </member>
-    </interface>
-
-    <enum basename="TSEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="ON" count="1"/>
-            <constant basename="OFF" count="1"/>
-        </member>
-    </enum>
-
-    <annotation basename="TSAnno">
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>boolean</type>
-            </method>
-        </member>
-    </annotation>
-        
-</package>
+                <member>
+                    <method basename="value">
+                        <modifier>public</modifier>
+                        <type>boolean</type>
+                    </method>
+                </member>
+            </annotation> 
+        </package>
+    </module>
+</sampleapi>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javadoc/tool/sampleapi/res/transitive.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+<sampleapi>
+    <module name="my.first.module" id="first">
+        <exports package="$exported"/>
+        <exports package="$exported.to">
+            <to module="$second"/>
+        </exports>
+        <opens package="$internal">
+            <to module="$second"/>
+        </opens>
+        <uses service="$service"/>
+        <package name="sampleapi.exported" id="exported">
+            <class basename="API" id="service">
+                <modifier>public</modifier>
+                <member>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>Object</type>
+                    </method>
+                </member>
+            </class>
+        </package>
+        <package name="sampleapi.exported.to"  id="exported.to">
+            <class basename="API" id="baseclass">
+                <modifier>public</modifier>
+                <member>
+                    <method basename="put">
+                        <param>Object</param>
+                        <type>void</type>
+                    </method>
+                </member>
+            </class>
+        </package>
+        <package name="sampleapi.not.exported" id="internal">
+            <class basename="AnImplementationDetail"/>
+        </package>
+    </module>
+    <module name="my.second.module" id="second" kind="open">
+        <requires module="$first" transitive="true"/>
+        <requires module="java.xml" static="true"/>
+        <provides service="$service">
+            <implementation class="$second.impl"/>
+            <implementation class="$third.impl"/>
+        </provides>
+        <package name="sampleapi.exported.second">
+            <class basename="API" id="second.impl">
+                <extend id="baseclass"/>
+            </class>
+            <class basename="OtherAPI" id="third.impl">
+                <extend id="baseclass"/>
+            </class>
+            <class basename="TClass">
+                <modifier>public</modifier>
+                <modifier>none|abstract</modifier>
+                <implement>SInterface0</implement>
+                <member>
+                    <field basename="id">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </field>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                        <throw>SException0</throw>
+                    </method>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <param>int</param>
+                        <type>void</type>
+                        <throw>SException0</throw>
+                    </method>
+                </member>
+            </class>
+        </package>
+    </module>
+</sampleapi>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/file/SetLocationForModule.java	Fri Mar 03 09:05:36 2017 +0000
@@ -0,0 +1,328 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8173914
+ * @summary JavaFileManager.setLocationForModule
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ *          jdk.compiler/com.sun.tools.javac.main
+ * @library /tools/lib
+ * @build toolbox.JavacTask toolbox.TestRunner toolbox.ToolBox SetLocationForModule
+ * @run main SetLocationForModule
+ */
+
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileManager.Location;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+import javax.tools.ToolProvider;
+
+import toolbox.JavacTask;
+import toolbox.TestRunner;
+import toolbox.TestRunner.Test;
+import toolbox.ToolBox;
+
+public class SetLocationForModule extends TestRunner {
+
+    public static void main(String... args) throws Exception {
+        new SetLocationForModule().runTests(m -> new Object[] { Paths.get(m.getName()) });
+    }
+
+    public SetLocationForModule() {
+        super(System.err);
+    }
+
+    private final JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+    private final ToolBox tb = new ToolBox();
+
+    @Test
+    public void testBasic(Path base) throws IOException {
+        try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            Location[] locns = {
+                StandardLocation.SOURCE_PATH,
+                StandardLocation.CLASS_PATH,
+                StandardLocation.PLATFORM_CLASS_PATH,
+            };
+            // set a value
+            Path out = Files.createDirectories(base.resolve("out"));
+            for (Location locn : locns) {
+                checkException("unsupported for location",
+                        IllegalArgumentException.class,
+                        "location is not an output location or a module-oriented location: " + locn,
+                        () -> fm.setLocationForModule(locn, "m", List.of(out)));
+            }
+        }
+    }
+
+    @Test
+    public void testModulePath(Path base) throws IOException {
+        try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            Path src = base.resolve("src");
+            Path src_m = src.resolve("m");
+            tb.writeJavaFiles(src_m, "module m { }");
+
+            Location locn = StandardLocation.MODULE_PATH;
+
+            Path modules1 = Files.createDirectories(base.resolve("modules1"));
+            new JavacTask(tb)
+                    .outdir(modules1)
+                    .options("--module-source-path", src.toString())
+                    .files(tb.findJavaFiles(src))
+                    .run();
+            fm.setLocationFromPaths(locn, List.of(modules1));
+
+            Location m = fm.getLocationForModule(locn, "m");
+            checkEqual("default setting",
+                    fm.getLocationAsPaths(m), modules1.resolve("m"));
+
+            Path override1 = Files.createDirectories(base.resolve("override1"));
+            fm.setLocationForModule(locn, "m", List.of(override1));
+            checkEqual("override setting 1",
+                    fm.getLocationAsPaths(m), override1);
+
+            Path override2 = Files.createDirectories(base.resolve("override2"));
+            fm.setLocationFromPaths(m, List.of(override2));
+            checkEqual("override setting 2",
+                    fm.getLocationAsPaths(m), override2);
+
+            Path modules2 = Files.createDirectories(base.resolve("modules2"));
+            fm.setLocationFromPaths(locn, List.of(modules2));
+
+            checkEqual("updated setting",
+                    fm.getLocationAsPaths(m), modules2.resolve("m"));
+        }
+    }
+
+    @Test
+    public void testModuleSourcePath(Path base) throws IOException {
+        try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+
+            Location locn = StandardLocation.MODULE_SOURCE_PATH;
+
+            Path src1 = Files.createDirectories(base.resolve("src1"));
+            Path src1_m = src1.resolve("m");
+            tb.writeJavaFiles(src1_m, "module m { }");
+//            fm.setLocationFromPaths(locn, List.of(src1));
+            fm.handleOption("--module-source-path", List.of(src1.toString()).iterator());
+
+            Location m = fm.getLocationForModule(locn, "m");
+            checkEqual("default setting",
+                    fm.getLocationAsPaths(m), src1.resolve("m"));
+
+            Path override1 = Files.createDirectories(base.resolve("override1"));
+            tb.writeJavaFiles(override1, "module m { }");
+            fm.setLocationForModule(locn, "m", List.of(override1));
+            checkEqual("override setting 1",
+                    fm.getLocationAsPaths(m), override1);
+
+            Path override2 = Files.createDirectories(base.resolve("override2"));
+            tb.writeJavaFiles(override2, "module m { }");
+            fm.setLocationFromPaths(m, List.of(override2));
+            checkEqual("override setting 2",
+                    fm.getLocationAsPaths(m), override2);
+
+            Path src2 = Files.createDirectories(base.resolve("src2"));
+            Path src2_m = src2.resolve("m");
+            tb.writeJavaFiles(src2_m, "module m { }");
+//            fm.setLocationFromPaths(locn, List.of(src2));
+            fm.handleOption("--module-source-path", List.of(src2.toString()).iterator());
+
+            checkEqual("updated setting",
+                    fm.getLocationAsPaths(m), src2.resolve("m"));
+        }
+    }
+
+    @Test
+    public void testOutput(Path base) throws IOException {
+        try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            Location locn = StandardLocation.CLASS_OUTPUT;
+
+            Path out1 = Files.createDirectories(base.resolve("out1"));
+            fm.setLocationFromPaths(locn, List.of(out1));
+
+            Location m = fm.getLocationForModule(locn, "m");
+            checkEqual("default setting",
+                    fm.getLocationAsPaths(m), out1.resolve("m"));
+
+            Path override1 = Files.createDirectories(base.resolve("override1"));
+            fm.setLocationForModule(locn, "m", List.of(override1));
+            checkEqual("override setting 1",
+                    fm.getLocationAsPaths(m), override1);
+
+            Path override2 = Files.createDirectories(base.resolve("override2"));
+            fm.setLocationFromPaths(m, List.of(override2));
+            checkEqual("override setting 2",
+                    fm.getLocationAsPaths(m), override2);
+
+            Path out2 = Files.createDirectories(base.resolve("out2"));
+            fm.setLocationFromPaths(locn, List.of(out2));
+
+            checkEqual("updated setting",
+                    fm.getLocationAsPaths(m), out2.resolve("m"));
+        }
+    }
+
+    @Test
+    public void testOutput_invalid(Path base) throws IOException {
+        try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            Location locn = StandardLocation.CLASS_OUTPUT;
+            // set a top default
+            Path out1 = Files.createDirectories(base.resolve("out1"));
+            fm.setLocationFromPaths(locn, List.of(out1));
+            // getLocnForModule
+            Location m = fm.getLocationForModule(locn, "m");
+            checkEqual("default setting",
+                    fm.getLocationAsPaths(m), out1.resolve("m"));
+
+            checkException("empty arg list",
+                    IllegalArgumentException.class, "empty path for directory",
+                    () -> fm.setLocationFromPaths(m, Collections.emptyList()));
+
+            Path out2 = Files.createDirectories(base.resolve("out2"));
+            checkException("empty arg list",
+                    IllegalArgumentException.class, "path too long for directory",
+                    () -> fm.setLocationFromPaths(m, List.of(out2, out2)));
+
+            Path notExist = base.resolve("notExist");
+            checkException("not exist",
+                    FileNotFoundException.class, notExist + ": does not exist",
+                    () -> fm.setLocationFromPaths(m, List.of(notExist)));
+
+            Path file = Files.createFile(base.resolve("file.txt"));
+            checkException("not exist",
+                    IOException.class, file + ": not a directory",
+                    () -> fm.setLocationFromPaths(m, List.of(file)));
+        }
+    }
+
+    @Test
+    public void testOutput_nested(Path base) throws IOException {
+        try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            Location locn = StandardLocation.CLASS_OUTPUT;
+
+            Path out1 = Files.createDirectories(base.resolve("out1"));
+            fm.setLocationForModule(locn, "m", List.of(out1));
+
+            Location m = fm.getLocationForModule(locn, "m");
+            checkEqual("initial setting",
+                    fm.getLocationAsPaths(m), out1);
+
+            Path out2 = Files.createDirectories(base.resolve("out2"));
+            checkException("create nested module",
+                    UnsupportedOperationException.class, "not supported for CLASS_OUTPUT[m]",
+                    () -> fm.setLocationForModule(m, "x", List.of(out2)));
+        }
+    }
+
+    @Test
+    public void testSystemModules(Path base) throws IOException {
+        try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            Location locn = StandardLocation.SYSTEM_MODULES;
+
+            Location javaCompiler = fm.getLocationForModule(locn, "java.compiler");
+            // cannot easily verify default setting: could be jrt: or exploded image
+
+            Path override1 = Files.createDirectories(base.resolve("override1"));
+            fm.setLocationForModule(locn, "java.compiler", List.of(override1));
+            checkEqual("override setting 1",
+                    fm.getLocationAsPaths(javaCompiler), override1);
+
+            Path override2 = Files.createDirectories(base.resolve("override2"));
+            fm.setLocationFromPaths(javaCompiler, List.of(override2));
+            checkEqual("override setting 2",
+                    fm.getLocationAsPaths(javaCompiler), override2);
+        }
+    }
+
+    @Test
+    public void testTemplate(Path base) {
+        // set a top default
+        // getLocnForModule
+        // set a value
+        // getLocnForModule
+        // reset
+        // getLocationForModule
+    }
+
+    interface RunnableWithException {
+        public void run() throws Exception;
+    }
+
+    void checkException(String message,
+            Class<? extends Throwable> expectedException, String expectedMessage,
+            RunnableWithException r) {
+        try {
+            r.run();
+            error(message + ": expected exception not thrown: " + expectedException);
+        } catch (Exception | Error t) {
+            if (expectedException.isAssignableFrom(t.getClass())) {
+                checkEqual("exception message",
+                        t.getMessage(), expectedMessage);
+
+            } else {
+                error(message + ": unexpected exception\n"
+                        + "expect: " + expectedException + "\n"
+                        + " found: " + t);
+            }
+        }
+    }
+
+    void checkEqual(String message, Iterable<? extends Path> found, Path... expect) {
+        List<Path> fList = asList(found);
+        List<Path> eList = List.of(expect);
+        if (!Objects.equals(fList, fList)) {
+            error(message + ": lists not equal\n"
+                    + "expect: " + eList + "\n"
+                    + " found: " + fList);
+        }
+    }
+
+    void checkEqual(String message, String found, String expect) {
+        if (!Objects.equals(found, expect)) {
+            error(message + ": strings not equal\n"
+                    + "expect: " + expect + "\n"
+                    + " found: " + found);
+        }
+    }
+
+    List<Path> asList(Iterable<? extends Path> a) {
+        List<Path> list = new ArrayList<>();
+        for (Path p : a) {
+            list.add(p);
+        }
+        return list;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/modules/SourceInSymlinkTest.java	Fri Mar 03 09:05:36 2017 +0000
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8175990
+ * @summary source in symbolic link
+ * @library /tools/lib
+ * @modules
+ *      jdk.compiler/com.sun.tools.javac.api
+ *      jdk.compiler/com.sun.tools.javac.main
+ * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase
+ * @run main SourceInSymlinkTest
+ */
+
+import java.nio.file.*;
+import javax.tools.*;
+
+import toolbox.JarTask;
+import toolbox.JavacTask;
+import toolbox.Task;
+import toolbox.ToolBox;
+
+public class SourceInSymlinkTest extends ModuleTestBase {
+    public static void main(String... args) throws Exception {
+        SourceInSymlinkTest t = new SourceInSymlinkTest();
+        t.runTests();
+    }
+
+    @Test
+    public void testModuleSourcePath(Path base) throws Exception {
+        Path src = base.resolve("src");
+        Path src_m = src.resolve("m");
+        tb.writeFile(src_m.resolve("module-info.java"), "module m { }");
+        tb.writeJavaFiles(src_m, "package p; public class A{}");
+
+        Path classes = base.resolve("classes");
+        Files.createDirectories(classes);
+
+        new JavacTask(tb)
+            .options("--module-source-path", src.toString())
+            .outdir(classes)
+            .files(src_m.resolve("p/A.java"))
+            .run()
+            .writeAll();
+
+        checkFiles(
+            classes.resolve("m/module-info.class"),
+            classes.resolve("m/p/A.class"));
+
+        // ok normal case works, now create a symlink to the source
+        Path lsrc = base.resolve("link");
+        Path lsrc_m = src.resolve("m");
+        Path lclasses = base.resolve("link-out");
+        Files.createDirectories(lclasses);
+        try {
+            Files.createSymbolicLink(lsrc, Paths.get("src"));
+        } catch (FileSystemException fse) {
+            System.err.println("warning: test passes vacuously, sym-link could not be created");
+            System.err.println(fse.getMessage());
+            return;
+        }
+        new JavacTask(tb)
+            .options("--module-source-path", lsrc.toString())
+            .outdir(lclasses)
+            .files(lsrc_m.resolve("p/A.java"))
+            .run()
+            .writeAll();
+
+        checkFiles(
+            lclasses.resolve("m/module-info.class"),
+            lclasses.resolve("m/p/A.class"));
+
+    }
+
+    void checkFiles(Path... files) throws Exception {
+        for (Path f: files) {
+            if (!Files.exists(f))
+                throw new Exception("expected file not found: " + f);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/processing/model/util/types/TestPseudoTypeHandling.java	Fri Mar 03 09:05:36 2017 +0000
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8175335
+ * @summary Test Types methods on module and package TypeMirrors
+ * @author  Joseph D. Darcy
+ * @library /tools/javac/lib
+ * @modules jdk.compiler
+ * @build   JavacTestingAbstractProcessor TestPseudoTypeHandling
+ * @compile -processor TestPseudoTypeHandling -proc:only TestPseudoTypeHandling.java
+ */
+
+import java.util.*;
+import java.util.function.*;
+import static java.util.Objects.*;
+import javax.annotation.processing.*;
+import javax.lang.model.element.*;
+import javax.lang.model.type.*;
+import javax.lang.model.util.*;
+
+/**
+ * Test basic handling of module type.
+ */
+public class TestPseudoTypeHandling extends JavacTestingAbstractProcessor {
+    public boolean process(Set<? extends TypeElement> annotations,
+                           RoundEnvironment roundEnv) {
+        if (!roundEnv.processingOver()) {
+            TypeMirror objectType  = requireNonNull(eltUtils.getTypeElement("java.lang.Object")).asType();
+
+            List<TypeMirror> typeMirrorsToTest =
+                List.of(requireNonNull(eltUtils.getModuleElement("java.base")).asType(),
+                        requireNonNull(eltUtils.getPackageElement("java.lang")).asType());
+
+            for (TypeMirror type : typeMirrorsToTest) {
+                expectException(t -> typeUtils.isSubtype(t, objectType), type);
+                expectException(t -> typeUtils.isSubtype(objectType, t), type);
+
+                expectException(t -> typeUtils.isAssignable(t, objectType), type);
+                expectException(t -> typeUtils.isAssignable(objectType, t), type);
+
+                expectException(t -> typeUtils.contains(t, objectType), type);
+                expectException(t -> typeUtils.contains(objectType, t), type);
+
+                expectException(t -> typeUtils.capture(t), type);
+                expectException(t -> typeUtils.erasure(t), type);
+
+                expectException(t -> typeUtils.getArrayType(t), type);
+
+                expectException(t -> typeUtils.directSupertypes(t), type);
+            }
+        }
+        return true;
+    }
+
+    void expectException(Consumer<TypeMirror> argument, TypeMirror type) {
+        try {
+            argument.accept(type);
+            throw new RuntimeException("Should not reach " + type.toString());
+        } catch (IllegalArgumentException e) {
+            ; // Expected
+        }
+    }
+}
--- a/test/tools/javadoc/sampleapi/SampleApiTest.java	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/tools/javadoc/sampleapi/SampleApiTest.java	Fri Mar 03 09:05:36 2017 +0000
@@ -30,6 +30,8 @@
  *          jdk.compiler/com.sun.tools.javac.parser
  *          jdk.compiler/com.sun.tools.javac.tree
  *          jdk.compiler/com.sun.tools.javac.util
+ *          jdk.javadoc/jdk.javadoc.internal.tool
+ * @build sampleapi.SampleApiDefaultRunner
  * @run main SampleApiTest
  */
 
--- a/test/tools/javadoc/sampleapi/res/fx.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/tools/javadoc/sampleapi/res/fx.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -21,25 +21,29 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.fx" style="fx">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.fx" style="fx">
+            <class basename="FXClass">
+                <modifier>public</modifier>
+                <member>
+                    <field basename="id">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </field>
+                    <method basename="setProp">
+                        <modifier>public|protected|private</modifier>
+                        <param>int|String</param>
+                        <type>void</type>
+                    </method>
+                    <method basename="getProp">
+                        <modifier>public|protected|private</modifier>
+                        <type>int|int|String</type>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="FXClass">
-        <modifier>public</modifier>
-        <member>
-            <field basename="id">
-                <modifier>public</modifier>
-                <type>int|boolean</type>
-            </field>
-            <method basename="setProp">
-                <modifier>public|protected|private</modifier>
-                <param>int|String</param>
-                <type>void</type>
-            </method>
-            <method basename="getProp">
-                <modifier>public|protected|private</modifier>
-                <type>int|int|String</type>
-            </method>
-        </member>
-    </class>
+        </package>
+    </module>
+</sampleapi>
 
-</package>
--- a/test/tools/javadoc/sampleapi/res/simple.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/tools/javadoc/sampleapi/res/simple.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -21,509 +21,514 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.simple">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.simple">
 
-    <class basename="SampleClass" id="baseclass">
-        <modifier>public</modifier>
-        <modifier>none|abstract</modifier>
-        <member>
-            <field basename="field">
-                <modifier>none|public</modifier>
-                <modifier>none|static</modifier>
-                <modifier>none|final</modifier>
-                <type>boolean|int|String</type>
-            </field>
-            <field basename="field">
-                <modifier>protected|private</modifier>
-                <type>String</type>
-            </field>
-            <constructor>
+            <class basename="SampleClass" id="baseclass">
                 <modifier>public</modifier>
-                <param>none|int|int,boolean|int,String</param>
-            </constructor>
-            <constructor>
+                <modifier>none|abstract</modifier>
+                <member>
+                    <field basename="field">
+                        <modifier>none|public</modifier>
+                        <modifier>none|static</modifier>
+                        <modifier>none|final</modifier>
+                        <type>boolean|int|String</type>
+                    </field>
+                    <field basename="field">
+                        <modifier>protected|private</modifier>
+                        <type>String</type>
+                    </field>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>none|int|int,boolean|int,String</param>
+                    </constructor>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                        <throw>NullPointerException</throw>
+                        <throw>SampleException0</throw>
+                    </constructor>
+                    <method basename="set">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>int|boolean|String</type>
+                    </method>
+                    <method basename="doSomething">
+                        <modifier>public</modifier>
+                        <type>void|int</type>
+                        <param>none|int|Object,int</param>
+                        <throw>NullPointerException</throw>
+                        <throw>ArithmeticException</throw>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="Derived">
                 <modifier>public</modifier>
-                <param>String</param>
-                <throw>NullPointerException</throw>
-                <throw>SampleException0</throw>
-            </constructor>
-            <method basename="set">
+                <extend id="baseclass"/>
+                <member>
+                    <field basename="myField">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </field>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>none|int|int,boolean|int,String</param>
+                    </constructor>
+                    <method basename="myGet">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="SampleSerial">
+                <import>java.io.Serializable</import>
                 <modifier>public</modifier>
-                <type>void</type>
-                <param>int</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>int|boolean|String</type>
-            </method>
-            <method basename="doSomething">
-                <modifier>public</modifier>
-                <type>void|int</type>
-                <param>none|int|Object,int</param>
-                <throw>NullPointerException</throw>
-                <throw>ArithmeticException</throw>
-            </method>
-        </member>
-    </class>
-
-    <class basename="Derived">
-        <modifier>public</modifier>
-        <extend id="baseclass"/>
-        <member>
-            <field basename="myField">
-                <modifier>public</modifier>
-                <type>int|boolean</type>
-            </field>
-            <constructor>
-                <modifier>public</modifier>
-                <param>none|int|int,boolean|int,String</param>
-            </constructor>
-            <method basename="myGet">
-                <modifier>public</modifier>
-                <type>int|boolean</type>
-            </method>
-        </member>
-    </class>
-
-    <class basename="SampleSerial">
-        <import>java.io.Serializable</import>
-        <modifier>public</modifier>
-        <implement ref="Serializable"/>
-        <member>
-            <field basename="specialData">
-                <modifier>private|none|public</modifier>
-                <type>boolean|int|String</type>
-            </field>
-        </member>
-    </class>
-
-    <class basename="SampleSerial">
-        <import>java.io.Serializable</import>
-        <import>java.io.ObjectStreamField</import>
-        <modifier>public</modifier>
-        <implement ref="Serializable"/>
-        <member>
-            <serialfield basename="serialField">String,Long,Boolean</serialfield>
-            <method basename="justToBeHere">
-                <modifier>public</modifier>
-                <type>String|long|boolean</type>
-            </method>
-        </member>
-    </class>
-
-    <class basename="SampleSerial">
-        <import>java.io.Serializable</import>
-        <import>java.io.ObjectOutputStream</import>
-        <import>java.io.ObjectOutput</import>
-        <import>java.io.IOException</import>
-        <import>java.io.ObjectStreamException</import>
-        <modifier>public</modifier>
-        <implement ref="Serializable"/>
-        <member>
-            <method name="writeObject">
-                <modifier>private</modifier>
-                <param>ObjectOutputStream</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-            <method name="writeExternal">
-                <modifier>public</modifier>
-                <param>ObjectOutput</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-            <method name="writeReplace">
-                <modifier>protected</modifier>
-                <param>none</param>
-                <type>Object</type>
-                <throw>ObjectStreamException</throw>
-            </method>
-            <method name="writeSomethingElse">
-                <modifier>public</modifier>
-                <param>Object</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-        </member>
-    </class>
-
-    <class basename="SampleSerial">
-        <import>java.io.Serializable</import>
-        <import>java.io.ObjectInputStream</import>
-        <import>java.io.ObjectInput</import>
-        <import>java.io.IOException</import>
-        <import>java.io.ObjectStreamException</import>
-        <modifier>public</modifier>
-        <implement ref="Serializable"/>
-        <member>
-            <method name="readObject">
-                <modifier>private</modifier>
-                <param>ObjectInputStream</param>
-                <type>void</type>
-                <throw>IOException</throw>
-                <throw>ClassNotFoundException</throw>
-            </method>
-            <method name="readExternal">
-                <modifier>public</modifier>
-                <param>ObjectInput</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-            <method name="readResolve">
-                <modifier>protected</modifier>
-                <param>none</param>
-                <type>Object</type>
-                <throw>ObjectStreamException</throw>
-            </method>
-            <method name="readSomethingElse">
-                <modifier>public</modifier>
-                <param>Object</param>
-                <type>void</type>
-                <throw>IOException</throw>
-            </method>
-        </member>
-    </class>
-
-    <class basename="Container">
-        <modifier>public</modifier>
-        <member>
-            <class basename="Inner">
-                <modifier>public</modifier>
+                <implement ref="Serializable"/>
                 <member>
-                    <field basename="value">
-                        <modifier>public</modifier>
-                        <type>int</type>
+                    <field basename="specialData">
+                        <modifier>private|none|public</modifier>
+                        <type>boolean|int|String</type>
                     </field>
                 </member>
             </class>
-            <class basename="Nested">
+
+            <class basename="SampleSerial">
+                <import>java.io.Serializable</import>
+                <import>java.io.ObjectStreamField</import>
                 <modifier>public</modifier>
-                <modifier>static</modifier>
+                <implement ref="Serializable"/>
+                <member>
+                    <serialfield basename="serialField">String,Long,Boolean</serialfield>
+                    <method basename="justToBeHere">
+                        <modifier>public</modifier>
+                        <type>String|long|boolean</type>
+                    </method>
+                </member>
             </class>
-            <interface basename="EventListener">
+
+            <class basename="SampleSerial">
+                <import>java.io.Serializable</import>
+                <import>java.io.ObjectOutputStream</import>
+                <import>java.io.ObjectOutput</import>
+                <import>java.io.IOException</import>
+                <import>java.io.ObjectStreamException</import>
                 <modifier>public</modifier>
-                <modifier>static</modifier>
+                <implement ref="Serializable"/>
                 <member>
-                    <method basename="onEvent">
-                         <modifier>public</modifier>
-                         <type>void</type>
+                    <method name="writeObject">
+                        <modifier>private</modifier>
+                        <param>ObjectOutputStream</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                    <method name="writeExternal">
+                        <modifier>public</modifier>
+                        <param>ObjectOutput</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                    <method name="writeReplace">
+                        <modifier>protected</modifier>
+                        <param>none</param>
+                        <type>Object</type>
+                        <throw>ObjectStreamException</throw>
+                    </method>
+                    <method name="writeSomethingElse">
+                        <modifier>public</modifier>
+                        <param>Object</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="SampleSerial">
+                <import>java.io.Serializable</import>
+                <import>java.io.ObjectInputStream</import>
+                <import>java.io.ObjectInput</import>
+                <import>java.io.IOException</import>
+                <import>java.io.ObjectStreamException</import>
+                <modifier>public</modifier>
+                <implement ref="Serializable"/>
+                <member>
+                    <method name="readObject">
+                        <modifier>private</modifier>
+                        <param>ObjectInputStream</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                        <throw>ClassNotFoundException</throw>
+                    </method>
+                    <method name="readExternal">
+                        <modifier>public</modifier>
+                        <param>ObjectInput</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                    <method name="readResolve">
+                        <modifier>protected</modifier>
+                        <param>none</param>
+                        <type>Object</type>
+                        <throw>ObjectStreamException</throw>
+                    </method>
+                    <method name="readSomethingElse">
+                        <modifier>public</modifier>
+                        <param>Object</param>
+                        <type>void</type>
+                        <throw>IOException</throw>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="Container">
+                <modifier>public</modifier>
+                <member>
+                    <class basename="Inner">
+                        <modifier>public</modifier>
+                        <member>
+                            <field basename="value">
+                                <modifier>public</modifier>
+                                <type>int</type>
+                            </field>
+                        </member>
+                    </class>
+                    <class basename="Nested">
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                    </class>
+                    <interface basename="EventListener">
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                        <member>
+                            <method basename="onEvent">
+                                <modifier>public</modifier>
+                                <type>void</type>
+                            </method>
+                        </member>
+                    </interface>
+                </member>
+            </class>
+
+            <!-- Errors and exceptions -->
+            <class basename="SampleError">
+                <modifier>public</modifier>
+                <extend ref="java.lang.Error"/>
+                <member>
+                    <field basename="errorInfo">
+                        <modifier>private</modifier>
+                        <type>boolean|int|String</type>
+                    </field>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                    </constructor>
+                    <method basename="getSampleData">
+                        <modifier>public</modifier>
+                        <type>int|String</type>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="SampleException">
+                <modifier>public</modifier>
+                <extend ref="java.lang.Exception"/>
+                <member>
+                    <field basename="exceptionInfo">
+                        <modifier>private</modifier>
+                        <type>boolean|int|String</type>
+                    </field>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                    </constructor>
+                    <method basename="getSampleData">
+                        <modifier>public</modifier>
+                        <type>int|String</type>
+                    </method>
+                </member>
+            </class>
+
+            <interface basename="SampleInterface" id="baseinterface">
+                <modifier>public|none</modifier>
+                <member>
+                    <method basename="method">
+                        <modifier>public</modifier>
+                        <type>void|int|Object</type>
                     </method>
                 </member>
             </interface>
-        </member> 
-    </class>
 
-    <!-- Errors and exceptions -->
-    <class basename="SampleError">
-        <modifier>public</modifier>
-        <extend ref="java.lang.Error"/>
-        <member>
-            <field basename="errorInfo">
-                <modifier>private</modifier>
-                <type>boolean|int|String</type>
-            </field>
-            <constructor>
+            <class basename="Implementor">
                 <modifier>public</modifier>
-                <param>String</param>
-            </constructor>
-            <method basename="getSampleData">
+                <implement id="baseinterface"/>
+                <member>
+                    <field basename="myField">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </field>
+                    <method basename="myGet">
+                        <modifier>public</modifier>
+                        <type>int|boolean</type>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="GenericClass" tparam="T">
+                <import>java.util.List</import>
                 <modifier>public</modifier>
-                <type>int|String</type>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>T</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>T</type>
+                        <param>int</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>List&lt;T&gt;</type>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="SampleException">
-        <modifier>public</modifier>
-        <extend ref="java.lang.Exception"/>
-        <member>
-            <field basename="exceptionInfo">
-                <modifier>private</modifier>
-                <type>boolean|int|String</type>
-            </field>
-            <constructor>
+            <class basename="GenericClass" tparam="K,V">
+                <import>java.util.Set</import>
+                <import>java.util.List</import>
+                <import>java.util.Map</import>
                 <modifier>public</modifier>
-                <param>String</param>
-            </constructor>
-            <method basename="getSampleData">
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>K,V</param>
+                    </method>
+                    <method basename="putMap">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>Map&lt;K,V&gt;</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>V</type>
+                        <param>K</param>
+                    </method>
+                    <method basename="getV">
+                        <modifier>public</modifier>
+                        <type>Set&lt;V&gt;|List&lt;V&gt;</type>
+                    </method>
+                    <method basename="getK">
+                        <modifier>public</modifier>
+                        <type>Set&lt;K&gt;|List&lt;K&gt;</type>
+                    </method>
+                </member>
+            </class>
+
+            <class basename="GenericClass" tparam="M,N,O">
+                <import>java.util.Set</import>
+                <import>java.util.List</import>
+                <import>java.util.Map</import>
                 <modifier>public</modifier>
-                <type>int|String</type>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>Set&lt;M&gt;|List&lt;M&gt;</type>
+                        <param>Map&lt;N,O&gt;</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>Set&lt;N&gt;|List&lt;N&gt;</type>
+                        <param>Map&lt;M,O&gt;</param>
+                    </method>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>Set&lt;O&gt;|List&lt;O&gt;</type>
+                        <param>Map&lt;M,N&gt;</param>
+                    </method>
+                </member>
+            </class>
 
-    <interface basename="SampleInterface" id="baseinterface">
-        <modifier>public|none</modifier>
-        <member>
-            <method basename="method">
+            <class basename="GenericUtil"> <!-- public static generic methods like Collections -->
+                <import>java.util.Set</import>
+                <import>java.util.List</import>
+                <import>java.util.Map</import>
+                <import>java.util.function.Supplier</import>
                 <modifier>public</modifier>
-                <type>void|int|Object</type>
-            </method>
-        </member>
-    </interface>
+                <member>
+                    <method tparam="E" basename="getSomething">
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                        <type>Set&lt;? extends E&gt;|List&lt;? extends E&gt;</type>
+                    </method>
+                    <method tparam="V,K" basename="getMore">
+                        <modifier>public|private</modifier>
+                        <modifier>static</modifier>
+                        <type>Map&lt;V,K&gt;</type>
+                    </method>
+                    <method tparam="E" basename="doSomething">
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                        <type>void</type>
+                        <param>E</param>
+                    </method>
+                    <method tparam="X extends Throwable" basename="orElseThrow">
+                        <modifier>public|private</modifier>
+                        <modifier>static</modifier>
+                        <type>X</type>
+                        <param>Supplier&lt;? extends X&gt;</param>
+                        <throw>X</throw>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="Implementor">
-        <modifier>public</modifier>
-        <implement id="baseinterface"/>
-        <member>
-            <field basename="myField">
+            <enum basename="SampleEnum">
                 <modifier>public</modifier>
-                <type>int|boolean</type>
-            </field>
-            <method basename="myGet">
+                <member>
+                    <constant basename="VALUE" count="3"/>
+                </member>
+            </enum>
+
+            <enum basename="SampleEnum">
                 <modifier>public</modifier>
-                <type>int|boolean</type>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <constant basename="VALUE" count="2"/>
+                    <constant basename="NOVALUE" count="1"/>
+                    <field basename="field">
+                        <modifier>private</modifier>
+                        <type>int|String</type>
+                    </field>
+                    <method basename="method">
+                        <modifier>public</modifier>
+                        <type>void|String</type>
+                    </method>
+                </member>
+            </enum>
 
-    <class basename="GenericClass" tparam="T">
-        <import>java.util.List</import>
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
+            <annodecl id="documented">
+                <class>Documented</class>
+            </annodecl>
+
+            <annodecl id="reten-source">
+                <class>Retention</class>
+                <arg name="value" value="RetentionPolicy.SOURCE"/>
+            </annodecl>
+
+            <annodecl id="reten-class">
+                <class>Retention</class>
+                <arg name="value" value="RetentionPolicy.CLASS"/>
+            </annodecl>
+
+            <annodecl id="reten-runtime">
+                <class>Retention</class>
+                <arg name="value" value="RetentionPolicy.RUNTIME"/>
+            </annodecl>
+
+            <annodecl id="target-method">
+                <class>Target</class>
+                <arg value="ElementType.METHOD"/>
+            </annodecl>
+
+            <annodecl id="target-field">
+                <class>Target</class>
+                <arg value="ElementType.FIELD"/>
+            </annodecl>
+
+            <annodecl id="target-type">
+                <class>Target</class>
+                <arg value="{ElementType.TYPE, ElementType.TYPE_USE}"/>
+            </annodecl>
+
+            <annotation basename="AnnotatedAnno">
+                <import>java.lang.annotation.Documented</import>
+                <anno>@documented</anno>
                 <modifier>public</modifier>
-                <type>void</type>
-                <param>T</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>T</type>
-                <param>int</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>List&lt;T&gt;</type>
-            </method>
-        </member>
-    </class>
-
-    <class basename="GenericClass" tparam="K,V">
-        <import>java.util.Set</import>
-        <import>java.util.List</import>
-        <import>java.util.Map</import>
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>K,V</param>
-            </method>
-            <method basename="putMap">
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>Map&lt;K,V&gt;</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>V</type>
-                <param>K</param>
-            </method>
-            <method basename="getV">
-                <modifier>public</modifier>
-                <type>Set&lt;V&gt;|List&lt;V&gt;</type>
-            </method>
-            <method basename="getK">
-                <modifier>public</modifier>
-                <type>Set&lt;K&gt;|List&lt;K&gt;</type>
-            </method>
-        </member>
-    </class>
-
-    <class basename="GenericClass" tparam="M,N,O">
-        <import>java.util.Set</import>
-        <import>java.util.List</import>
-        <import>java.util.Map</import>
-        <modifier>public</modifier>
-        <member>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>Set&lt;M&gt;|List&lt;M&gt;</type>
-                <param>Map&lt;N,O&gt;</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>Set&lt;N&gt;|List&lt;N&gt;</type>
-                <param>Map&lt;M,O&gt;</param>
-            </method>
-            <method basename="get">
-                <modifier>public</modifier>
-                <type>Set&lt;O&gt;|List&lt;O&gt;</type>
-                <param>Map&lt;M,N&gt;</param>
-            </method>
-        </member>
-    </class>
-
-    <class basename="GenericUtil"> <!-- public static generic methods like Collections -->
-        <import>java.util.Set</import>
-        <import>java.util.List</import>
-        <import>java.util.Map</import>
-        <import>java.util.function.Supplier</import>
-        <modifier>public</modifier>
-        <member>
-            <method tparam="E" basename="getSomething">
-                <modifier>public</modifier>
-                <modifier>static</modifier>
-                <type>Set&lt;? extends E&gt;|List&lt;? extends E&gt;</type>
-            </method>
-            <method tparam="V,K" basename="getMore">
-                <modifier>public|private</modifier>
-                <modifier>static</modifier>
-                <type>Map&lt;V,K&gt;</type>
-            </method>
-            <method tparam="E" basename="doSomething">
-                <modifier>public</modifier>
-                <modifier>static</modifier>
-                <type>void</type>
-                <param>E</param>
-            </method>
-            <method tparam="X extends Throwable" basename="orElseThrow">
-                <modifier>public|private</modifier>
-                <modifier>static</modifier>
-                <type>X</type>
-                <param>Supplier&lt;? extends X&gt;</param>
-                <throw>X</throw>
-            </method>
-        </member>
-    </class>
-
-    <enum basename="SampleEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="VALUE" count="3"/>
-        </member>
-    </enum>
-        
-    <enum basename="SampleEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="VALUE" count="2"/>
-            <constant basename="NOVALUE" count="1"/>
-            <field basename="field">
-                <modifier>private</modifier>
-                <type>int|String</type>
-            </field>
-            <method basename="method">
-                <modifier>public</modifier>
-                <type>void|String</type>
-            </method>
-        </member>
-    </enum>
-
-    <annodecl id="documented">
-        <class>Documented</class>
-    </annodecl>
-
-    <annodecl id="reten-source">
-        <class>Retention</class>
-        <arg name="value" value="RetentionPolicy.SOURCE"/>
-    </annodecl>
-
-    <annodecl id="reten-class">
-        <class>Retention</class>
-        <arg name="value" value="RetentionPolicy.CLASS"/>
-    </annodecl>
-
-    <annodecl id="reten-runtime">
-        <class>Retention</class>
-        <arg name="value" value="RetentionPolicy.RUNTIME"/>
-    </annodecl>
-
-    <annodecl id="target-method">
-        <class>Target</class>
-        <arg value="ElementType.METHOD"/>
-    </annodecl>
-
-    <annodecl id="target-field">
-        <class>Target</class>
-        <arg value="ElementType.FIELD"/>
-    </annodecl>
-
-    <annodecl id="target-type">
-        <class>Target</class>
-        <arg value="{ElementType.TYPE, ElementType.TYPE_USE}"/>
-    </annodecl>
-
-    <annotation basename="AnnotatedAnno">
-        <import>java.lang.annotation.Documented</import>
-        <anno>@documented</anno>
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>boolean|String</type>
-            </method>
-        </member>
-    </annotation>
-
-    <annotation basename="AnnotatedAnno">
-        <import>java.lang.annotation.Retention</import>
-        <import>java.lang.annotation.RetentionPolicy</import>
-        <anno>@reten-source|@reten-class|@reten-runtime</anno>
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>int</type>
-            </method>
-        </member>
-    </annotation>
-
-    <class basename="AnnoContainer">
-        <import>java.lang.annotation.Retention</import>
-        <import>java.lang.annotation.RetentionPolicy</import>
-        <import>java.lang.annotation.Target</import>
-        <import>java.lang.annotation.ElementType</import>
-        <modifier>public</modifier>
-        <member>
-            <annotation basename="AnnotatedAnno">
-                <anno>@reten-source|@reten-class|@reten-runtime</anno>
-                <anno>@target-method|@target-field|@target-type</anno>
-                <modifier>public</modifier>
-                <modifier>static</modifier>
                 <member>
                     <method basename="value">
                         <modifier>public</modifier>
-                        <type>String</type>
+                        <type>boolean|String</type>
                     </method>
                 </member>
             </annotation>
-        </member>
-    </class>
 
-    <annodecl id="deprecated">
-        <class>Deprecated</class>
-    </annodecl>
+            <annotation basename="AnnotatedAnno">
+                <import>java.lang.annotation.Retention</import>
+                <import>java.lang.annotation.RetentionPolicy</import>
+                <anno>@reten-source|@reten-class|@reten-runtime</anno>
+                <modifier>public</modifier>
+                <member>
+                    <method basename="value">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </method>
+                </member>
+            </annotation>
 
-    <annodecl id="safevarargs">
-        <class>SafeVarargs</class>
-    </annodecl>
+            <class basename="AnnoContainer">
+                <import>java.lang.annotation.Retention</import>
+                <import>java.lang.annotation.RetentionPolicy</import>
+                <import>java.lang.annotation.Target</import>
+                <import>java.lang.annotation.ElementType</import>
+                <modifier>public</modifier>
+                <member>
+                    <annotation basename="AnnotatedAnno">
+                        <anno>@reten-source|@reten-class|@reten-runtime</anno>
+                        <anno>@target-method|@target-field|@target-type</anno>
+                        <modifier>public</modifier>
+                        <modifier>static</modifier>
+                        <member>
+                            <method basename="value">
+                                <modifier>public</modifier>
+                                <type>String</type>
+                            </method>
+                        </member>
+                    </annotation>
+                </member>
+            </class>
 
-    <annodecl id="suppresswarnings">
-        <class>SuppressWarnings</class>
-        <arg value="{&quot;unchecked&quot;, &quot;rawtypes&quot;}"/>
-    </annodecl>
+            <annodecl id="deprecated">
+                <class>Deprecated</class>
+            </annodecl>
 
-    <class basename="AnnotatedClass">
-        <modifier>public</modifier>
-        <member>
-            <method basename="deprecatedMethod">
-                <anno>@deprecated</anno>
+            <annodecl id="safevarargs">
+                <class>SafeVarargs</class>
+            </annodecl>
+
+            <annodecl id="suppresswarnings">
+                <class>SuppressWarnings</class>
+                <arg value="{&quot;unchecked&quot;, &quot;rawtypes&quot;}"/>
+            </annodecl>
+
+            <class basename="AnnotatedClass">
                 <modifier>public</modifier>
-                <type>void</type>
-            </method>
-            <method basename="safeVarargsMethod">
-                <anno>@safevarargs</anno>
-                <modifier>public</modifier>
-                <type>void|int</type>
-                <param>String...</param>
-            </method>
-            <method basename="suppressWarningsMethod">
-                <anno>@suppresswarnings</anno>
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>int|Object</param>
-            </method>
-        </member>
-    </class>
-</package>
+                <member>
+                    <method basename="deprecatedMethod">
+                        <anno>@deprecated</anno>
+                        <modifier>public</modifier>
+                        <type>void</type>
+                    </method>
+                    <method basename="safeVarargsMethod">
+                        <anno>@safevarargs</anno>
+                        <modifier>public</modifier>
+                        <type>void|int</type>
+                        <param>String...</param>
+                    </method>
+                    <method basename="suppressWarningsMethod">
+                        <anno>@suppresswarnings</anno>
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int|Object</param>
+                    </method>
+                </member>
+            </class>
+        </package>
+    </module>
+</sampleapi>
+
--- a/test/tools/javadoc/sampleapi/res/sub.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/tools/javadoc/sampleapi/res/sub.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -21,69 +21,72 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.simple.sub">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.simple.sub">
+            <class basename="SClass">
+                <modifier>public</modifier>
+                <modifier>none|abstract</modifier>
+                <implement>SInterface0</implement>
+                <member>
+                    <field basename="id">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </field>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                        <throw>SException0</throw>
+                    </method>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <param>int</param>
+                        <type>void</type>
+                        <throw>SException0</throw>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="SClass">
-        <modifier>public</modifier>
-        <modifier>none|abstract</modifier>
-        <implement>SInterface0</implement>
-        <member>
-            <field basename="id">
+            <class basename="SException">
                 <modifier>public</modifier>
-                <type>int</type>
-            </field>
-            <method basename="get">
+                <extend ref="java.lang.Exception"/>
+                <member>
+                    <constructor>
+                        <modifier>public</modifier>
+                        <param>String</param>
+                    </constructor>
+                </member>
+            </class>
+
+            <interface basename="SInterface">
                 <modifier>public</modifier>
-                <type>int</type>
-                <throw>SException0</throw>
-            </method>
-            <method basename="put">
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int</param>
+                    </method>
+                </member>
+            </interface>
+
+            <enum basename="SEnum">
                 <modifier>public</modifier>
-                <param>int</param>
-                <type>void</type>
-                <throw>SException0</throw>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <constant basename="ON" count="1"/>
+                    <constant basename="OFF" count="1"/>
+                </member>
+            </enum>
 
-    <class basename="SException">
-        <modifier>public</modifier>
-        <extend ref="java.lang.Exception"/>
-        <member>
-            <constructor>
+            <annotation basename="SAnno">
                 <modifier>public</modifier>
-                <param>String</param>
-            </constructor>
-        </member>
-    </class>
+                <member>
+                    <method basename="value">
+                        <modifier>public</modifier>
+                        <type>boolean</type>
+                    </method>
+                </member>
+            </annotation>
+        </package>
+    </module>
+</sampleapi>
 
-    <interface basename="SInterface">
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
-                <modifier>public</modifier>
-                <type>void</type>
-                <param>int</param>
-            </method>
-        </member>
-    </interface>
-
-    <enum basename="SEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="ON" count="1"/>
-            <constant basename="OFF" count="1"/>
-        </member>
-    </enum>
-
-    <annotation basename="SAnno">
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>boolean</type>
-            </method>
-        </member>
-    </annotation>
-        
-</package>
--- a/test/tools/javadoc/sampleapi/res/tiny.xml	Fri Feb 24 11:07:03 2017 +0000
+++ b/test/tools/javadoc/sampleapi/res/tiny.xml	Fri Mar 03 09:05:36 2017 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -21,51 +21,53 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<package name="sampleapi.tiny">
+<sampleapi>
+    <module name="UNNAMED">
+        <package name="sampleapi.tiny">
+            <class basename="TinyClass">
+                <modifier>public</modifier>
+                <modifier>none|abstract</modifier>
+                <member>
+                    <field basename="id">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </field>
+                    <method basename="get">
+                        <modifier>public</modifier>
+                        <type>int</type>
+                    </method>
+                </member>
+            </class>
 
-    <class basename="TinyClass">
-        <modifier>public</modifier>
-        <modifier>none|abstract</modifier>
-        <member>
-            <field basename="id">
+            <interface basename="TinyInterface">
                 <modifier>public</modifier>
-                <type>int</type>
-            </field>
-            <method basename="get">
+                <member>
+                    <method basename="put">
+                        <modifier>public</modifier>
+                        <type>void</type>
+                        <param>int</param>
+                    </method>
+                </member>
+            </interface>
+
+            <enum basename="TinyEnum">
                 <modifier>public</modifier>
-                <type>int</type>
-            </method>
-        </member>
-    </class>
+                <member>
+                    <constant basename="YES" count="1"/>
+                    <constant basename="NO" count="1"/>
+                    <constant basename="MAYBE" count="1"/>
+                </member>
+            </enum>
 
-    <interface basename="TinyInterface">
-        <modifier>public</modifier>
-        <member>
-            <method basename="put">
+            <annotation basename="TinyAnno">
                 <modifier>public</modifier>
-                <type>void</type>
-                <param>int</param>
-            </method>
-        </member>
-    </interface>
-
-    <enum basename="TinyEnum">
-        <modifier>public</modifier>
-        <member>
-            <constant basename="YES" count="1"/>
-            <constant basename="NO" count="1"/>
-            <constant basename="MAYBE" count="1"/>
-        </member>
-    </enum>
-
-    <annotation basename="TinyAnno">
-        <modifier>public</modifier>
-        <member>
-            <method basename="value">
-                <modifier>public</modifier>
-                <type>boolean</type>
-            </method>
-        </member>
-    </annotation>
-        
-</package>
+                <member>
+                    <method basename="value">
+                        <modifier>public</modifier>
+                        <type>boolean</type>
+                    </method>
+                </member>
+            </annotation>
+        </package>
+    </module>
+</sampleapi>