changeset 60547:9d9ce4a87009

8241073: Pre-generated Stubs for javax.management, Activation, Naming Reviewed-by: erikj, ihse, alanb, dfuchs
author rriggs
date Thu, 19 Mar 2020 15:34:34 -0400
parents 84ae4e628639
children 6385879efd46
files make/CompileInterimRmic.gmk make/Docs.gmk make/Global.gmk make/Main.gmk make/ZipSource.gmk make/autoconf/spec.gmk.in make/common/RMICompilation.gmk make/jdk/netbeans/jmx/build.xml make/rmic/Rmic-java.management.rmi.gmk make/rmic/Rmic-java.rmi.gmk make/rmic/Rmic-jdk.naming.rmi.gmk make/rmic/RmicCommon.gmk src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIConnectionImpl_Stub.java src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIServerImpl_Stub.java src/java.rmi/share/classes/java/rmi/activation/ActivationGroup_Stub.java src/java.rmi/share/classes/sun/rmi/server/Activation$ActivationSystemImpl_Stub.java src/java.rmi/share/doc/stub/java/rmi/activation/ActivationGroup_Stub.java src/jdk.naming.rmi/share/classes/com/sun/jndi/rmi/registry/ReferenceWrapper_Stub.java
diffstat 18 files changed, 1139 insertions(+), 534 deletions(-) [+]
line wrap: on
line diff
--- a/make/CompileInterimRmic.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-#
-# Copyright (c) 2011, 2020, 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# 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.
-#
-
-default: all
-
-include $(SPEC)
-include MakeBase.gmk
-include JavaCompilation.gmk
-include SetupJavaCompilers.gmk
-
-################################################################################
-# Generate interim versions of the module-info.java files for the interim
-# langtools modules. Each interim module has ".interim" added as suffix to the
-# original module name.
-
-INTERIM_MODULEINFO_PATTERN := \
-    $(foreach m, $(INTERIM_RMIC_BASE_MODULES), -e 's/$m\([,; ]\)/$m.interim\1/g') \
-    -e '/ToolProvider[,; ]/d'
-
-$(BUILDTOOLS_OUTPUTDIR)/gensrc/%.interim/module-info.java: \
-    $(TOPDIR)/src/%/share/classes/module-info.java
-	$(call LogInfo, Generating module-info.java for $*.interim)
-	$(call MakeDir, $(@D))
-	$(SED) $(INTERIM_MODULEINFO_PATTERN) $< > $@
-
-TARGETS += $(patsubst %, $(BUILDTOOLS_OUTPUTDIR)/gensrc/%/module-info.java, \
-    $(INTERIM_RMIC_MODULES))
-
-################################################################################
-
-RMIC_PKGS := \
-    sun/rmi/rmic \
-    sun/tools/asm \
-    sun/tools/java \
-    sun/tools/javac \
-    sun/tools/tree \
-    sun/tools/util \
-    #
-
-$(eval $(call SetupJavaCompilation, BUILD_jdk.rmic.interim, \
-    SETUP := GENERATE_OLDBYTECODE, \
-    SRC := $(TOPDIR)/src/jdk.rmic/share/classes, \
-    EXCLUDE_FILES := $(TOPDIR)/src/jdk.rmic/share/classes/module-info.java, \
-    EXTRA_FILES := $(BUILDTOOLS_OUTPUTDIR)/gensrc/jdk.rmic.interim/module-info.java, \
-    INCLUDES := $(RMIC_PKGS), \
-    BIN := $(BUILDTOOLS_OUTPUTDIR)/interim_rmic_modules/jdk.rmic.interim, \
-    COPY := .properties, \
-    DISABLED_WARNINGS := deprecation, \
-    ADD_JAVAC_FLAGS := \
-        --module-path $(BUILDTOOLS_OUTPUTDIR)/interim_rmic_modules \
-        $(INTERIM_RMIC_ADD_EXPORTS), \
-))
-
-TARGETS += $(BUILD_jdk.rmic.interim)
-
-##########################################################################################
-
-all: $(TARGETS)
--- a/make/Docs.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ b/make/Docs.gmk	Thu Mar 19 15:34:34 2020 -0400
@@ -1,4 +1,4 @@
-# Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2020, 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
@@ -57,10 +57,7 @@
 ################################################################################
 # Javadoc settings
 
-# On top of the sources that was used to compile the JDK, we need some
-# extra java.rmi sources that are used just for javadoc.
-MODULES_SOURCE_PATH := $(call PathList, $(call GetModuleSrcPath) \
-    $(SUPPORT_OUTPUTDIR)/rmic/* $(TOPDIR)/src/*/share/doc/stub)
+MODULES_SOURCE_PATH := $(call PathList, $(call GetModuleSrcPath) )
 
 # URLs
 JAVADOC_BASE_URL := https://docs.oracle.com/pls/topic/lookup?ctx=javase$(VERSION_NUMBER)&amp;id=homepage
--- a/make/Global.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ b/make/Global.gmk	Thu Mar 19 15:34:34 2020 -0400
@@ -45,7 +45,7 @@
 	$(info $(_) make <name>-image      # Build just the image for any of: )
 	$(info $(_)                        # jdk, test, docs, symbols, legacy-jre, static-libs)
 	$(info $(_) make <phase>           # Build the specified phase and everything it depends on)
-	$(info $(_)                        # (gensrc, java, copy, libs, launchers, gendata, rmic))
+	$(info $(_)                        # (gensrc, java, copy, libs, launchers, gendata))
 	$(info $(_) make *-only            # Applies to most targets and disables building the)
 	$(info $(_)                        # dependencies for that target. This is faster but may)
 	$(info $(_)                        # result in incorrect build results!)
@@ -82,7 +82,7 @@
 	$(info $(_) make <module>          # Build <module> and everything it depends on)
 	$(info $(_) make <module>-<phase>  # Compile the specified phase for the specified module)
 	$(info $(_)                        # and everything it depends on)
-	$(info $(_)                        # (gensrc, java, copy, libs, launchers, gendata, rmic))
+	$(info $(_)                        # (gensrc, java, copy, libs, launchers, gendata))
 	$(info )
 	$(info Make control variables)
 	$(info $(_) CONF=                  # Build all configurations (note, assignment is empty))
--- a/make/Main.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ b/make/Main.gmk	Thu Mar 19 15:34:34 2020 -0400
@@ -72,9 +72,6 @@
 interim-langtools:
 	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimLangtools.gmk)
 
-interim-rmic:
-	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
-
 interim-tzdb:
 	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimTZDB.gmk)
 
@@ -89,7 +86,7 @@
 	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsHotspot.gmk)
 
 ALL_TARGETS += buildtools-langtools interim-langtools \
-    interim-rmic interim-tzdb buildtools-jdk buildtools-modules \
+    interim-tzdb buildtools-jdk buildtools-modules \
     buildtools-hotspot
 
 ################################################################################
@@ -194,16 +191,6 @@
 ALL_TARGETS += $(JAVA_TARGETS)
 
 ################################################################################
-# Targets for running rmic.
-$(eval $(call DeclareRecipesForPhase, RMIC, \
-    TARGET_SUFFIX := rmic, \
-    FILE_PREFIX := Rmic, \
-    MAKE_SUBDIR := rmic, \
-    CHECK_MODULES := $(ALL_MODULES)))
-
-ALL_TARGETS += $(RMIC_TARGETS)
-
-################################################################################
 # Targets for compiling native libraries
 $(eval $(call DeclareRecipesForPhase, LIBS, \
     TARGET_SUFFIX := libs, \
@@ -688,10 +675,6 @@
 
   $(GENDATA_TARGETS): interim-langtools buildtools-jdk
 
-  interim-rmic: interim-langtools
-
-  $(RMIC_TARGETS): interim-langtools interim-rmic
-
   $(JAVA_TARGETS): interim-langtools
 
   # Declare dependencies between hotspot-<variant>* targets
@@ -732,9 +715,6 @@
   # Declare dependencies between the module meta targets
   $(foreach m, $(ALL_MODULES), $(eval $m: $(call FindDepsForModule,$m)))
 
-  # Declare dependencies between <module>-rmic to <module>-java
-  $(foreach m, $(RMIC_MODULES), $(eval $m-rmic: $m-java))
-
   # Declare dependencies from <module>-lib to <module>-java
   # Skip modules that do not have java source.
   $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java))
@@ -768,7 +748,7 @@
   jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-src
   jdk.internal.vm.compiler.management-gensrc-moduleinfo: jdk.internal.vm.compiler.management-gensrc-src
 
-  jdk.jdeps-gendata: java rmic
+  jdk.jdeps-gendata: java
 
   # The ct.sym generation uses all the moduleinfos as input
   jdk.compiler-gendata: $(GENSRC_MODULEINFO_TARGETS)
@@ -790,7 +770,6 @@
   # Declare dependencies from <module>-jmod to all other module targets
   $(foreach m, $(JAVA_MODULES), $(eval $m_JMOD_DEPS += $m-java))
   $(foreach m, $(GENDATA_MODULES), $(eval $m_JMOD_DEPS += $m-gendata))
-  $(foreach m, $(RMIC_MODULES), $(eval $m_JMOD_DEPS += $m-rmic))
   $(foreach m, $(LIBS_MODULES), $(eval $m_JMOD_DEPS += $m-libs))
   $(foreach m, $(LAUNCHER_MODULES), $(eval $m_JMOD_DEPS += $m-launchers))
   $(foreach m, $(COPY_MODULES), $(eval $m_JMOD_DEPS += $m-copy))
@@ -856,7 +835,7 @@
   zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \
       $(filter jdk.crypto%, $(JAVA_TARGETS))
 
-  zip-source: gensrc rmic
+  zip-source: gensrc
 
   jrtfs-jar: interim-langtools
 
@@ -903,11 +882,11 @@
 
   bootcycle-images: jdk-image
 
-  docs-jdk-api-javadoc: $(GENSRC_TARGETS) rmic
+  docs-jdk-api-javadoc: $(GENSRC_TARGETS)
 
-  docs-javase-api-javadoc: $(GENSRC_TARGETS) rmic
+  docs-javase-api-javadoc: $(GENSRC_TARGETS)
 
-  docs-reference-api-javadoc: $(GENSRC_TARGETS) rmic
+  docs-reference-api-javadoc: $(GENSRC_TARGETS)
 
   docs-jdk-api-modulegraph: exploded-image buildtools-modules
 
@@ -989,7 +968,7 @@
 
 # If not already set, set the JVM specific tools targets
 JVM_TOOLS_TARGETS ?= buildtools-hotspot
-buildtools: buildtools-langtools interim-langtools interim-rmic \
+buildtools: buildtools-langtools interim-langtools \
     buildtools-jdk $(JVM_TOOLS_TARGETS)
 
 # Declare dependencies from hotspot-<variant> targets
@@ -1012,8 +991,6 @@
 
 java: $(JAVA_TARGETS)
 
-rmic: $(RMIC_TARGETS)
-
 libs: $(LIBS_TARGETS)
 
 static-libs: $(STATIC_LIBS_TARGETS)
@@ -1031,7 +1008,6 @@
 $(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc))
 $(foreach m, $(JAVA_MODULES), $(eval $m: $m-java))
 $(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata))
-$(foreach m, $(RMIC_MODULES), $(eval $m: $m-rmic))
 $(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
 $(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
 $(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy))
@@ -1131,7 +1107,7 @@
 all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles
 
 ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
-    copy java rmic libs static-libs launchers jmods \
+    copy java libs static-libs launchers jmods \
     jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \
     exploded-image-base exploded-image \
     create-buildjdk docs-jdk-api docs-javase-api docs-reference-api docs-jdk \
--- a/make/ZipSource.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ b/make/ZipSource.gmk	Thu Mar 19 15:34:34 2020 -0400
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2020, 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
@@ -39,18 +39,12 @@
 # Create the directory structure for src.zip using symlinks.
 # <module>/<package>/<file>.java
 
-# Find extra source dirs for a module that are not part of normal compilation
-# but should be included in src.zip.
-# $1: Module to find dirs for
-ExtraSrcDirs = \
-    $(wildcard $(SUPPORT_OUTPUTDIR)/rmic/$(strip $1))
-
 ALL_MODULES := $(FindAllModules)
 
 # Generate the src dirs in the first make invocation and then call this makefile
 # again to create src.zip.
 $(foreach m, $(ALL_MODULES), \
-  $(foreach d, $(call FindModuleSrcDirs, $m) $(call ExtraSrcDirs, $m), \
+  $(foreach d, $(call FindModuleSrcDirs, $m), \
     $(eval $d_TARGET := $(SRC_ZIP_WORK_DIR)/$(patsubst $(TOPDIR)/%,%,$d)/$m) \
     $(if $(SRC_GENERATED), , \
       $(eval $$($d_TARGET): $d ; \
--- a/make/autoconf/spec.gmk.in	Tue Mar 17 21:35:26 2020 +0100
+++ b/make/autoconf/spec.gmk.in	Thu Mar 19 15:34:34 2020 -0400
@@ -656,7 +656,7 @@
 BUILD_JAVA=@FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS)
 BUILD_JAR=@FIXPATH@ $(BUILD_JDK)/bin/jar
 
-# Interim langtools and rmic modules and arguments
+# Interim langtools modules and arguments
 INTERIM_LANGTOOLS_BASE_MODULES := java.compiler jdk.compiler jdk.javadoc
 INTERIM_LANGTOOLS_MODULES := $(addsuffix .interim, $(INTERIM_LANGTOOLS_BASE_MODULES))
 INTERIM_LANGTOOLS_ADD_EXPORTS := \
@@ -675,15 +675,6 @@
 JAVAC_MAIN_CLASS = -m jdk.compiler.interim/com.sun.tools.javac.Main
 JAVADOC_MAIN_CLASS = -m jdk.javadoc.interim/jdk.javadoc.internal.tool.Main
 
-INTERIM_RMIC_BASE_MODULES := jdk.rmic
-INTERIM_RMIC_MODULES := $(addsuffix .interim, $(INTERIM_RMIC_BASE_MODULES))
-    #
-# Use = to delay expansion of PathList since it's not available in this file.
-INTERIM_RMIC_ARGS = --limit-modules java.base,jdk.compiler,jdk.javadoc \
-    --module-path $(call PathList, $(BUILDTOOLS_OUTPUTDIR)/interim_rmic_modules \
-        $(BUILDTOOLS_OUTPUTDIR)/interim_langtools_modules) \
-    #
-
 # You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ...
 # Use = assignment to be able to override in bootcycle-spec.gmk
 NEW_JAVAC   = $(INTERIM_LANGTOOLS_ARGS) $(JAVAC_MAIN_CLASS)
--- a/make/common/RMICompilation.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-#
-# Copyright (c) 2011, 2019, 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# 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.
-#
-
-# Setup make rules for creating an RMI compilation.
-#
-# Parameter 1 is the name of the rule. This name is used as variable prefix,
-# and the targets generated are listed in a variable by that name.
-#
-# Remaining parameters are named arguments. These include:
-#   CLASSES:=List of classes to generate stubs for
-#   CLASSES_DIR:=Directory where to look for classes
-#   STUB_CLASSES_DIR:=Directory in where to put stub classes
-#   RUN_V11:=Set to run rmic with -v1.1
-#   RUN_V12:=Set to run rmic with -v1.2
-#   KEEP_GENERATED:=Set to keep generated sources around
-#   STUB_SOURCES_DIR:=Directory to put generated sources in
-SetupRMICompilation = $(NamedParamsMacroTemplate)
-define SetupRMICompilationBody
-
-  $1_DEP_FILE := $$($1_STUB_CLASSES_DIR)/_the.$1_rmic.generated
-
-  $1_CLASSES_SLASH := $$(subst .,/,$$($1_CLASSES))
-  $1_CLASS_FILES := $$(addprefix $$($1_CLASSES_DIR)/,$$(addsuffix .class,$$($1_CLASSES_SLASH)))
-  $1_STUB_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Stub.class,$$($1_CLASSES_SLASH)))
-  $1_TARGETS := $$($1_STUB_FILES)
-  $1_ARGS :=
-  ifneq (,$$($1_RUN_V11))
-    $1_SKEL_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Skel.class,$$($1_CLASSES_SLASH)))
-    $1_TARGETS += $$($1_SKEL_FILES)
-    $1_ARGS += -v1.1
-  endif
-  ifneq (,$$($1_RUN_V12))
-    $1_ARGS += -v1.2
-  endif
-
-  $1_TIE_BASE_FILES := $$(foreach f,$$($1_CLASSES_SLASH),$$(dir $$f)_$$(notdir $$f))
-  $1_TIE_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/org/omg/stub/,$$(addsuffix _Tie.class,$$($1_TIE_BASE_FILES)))
-  $1_TIE_STDPKG_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Tie.class,$$($1_TIE_BASE_FILES)))
-
-  ifneq ($$($1_KEEP_GENERATED), )
-    $1_ARGS += -keepgenerated
-    $1_JAVA_TARGETS := $$(subst .class,.java,$$($1_TARGETS))
-    ifneq ($$($1_STUB_SOURCES_DIR), )
-      # This is where the java files are created by rmic
-      $1_JAVA_TARGETS_REL := $$(subst $$($1_STUB_CLASSES_DIR),, $$($1_JAVA_TARGETS))
-      # This is where the caller wants the java files
-      $1_JAVA_TARGETS := $$(addprefix $$($1_STUB_SOURCES_DIR), $$($1_JAVA_TARGETS_REL))
-    endif
-    $1_TARGETS += $$($1_JAVA_TARGETS)
-  endif
-
-  $1_DOLLAR_SAFE_CLASSES := $$(subst $$$$,\$$$$,$$($1_CLASSES))
-
-  $$($1_TARGETS): $$($1_DEP_FILE) $$($1_CLASS_FILES)
-
-  $$($1_DEP_FILE): $$($1_CLASS_FILES)
-	$$(call LogInfo, Running rmic $$($1_ARGS) for $$($1_DOLLAR_SAFE_CLASSES))
-	$$(call MakeDir, $$($1_STUB_CLASSES_DIR))
-	$(RMIC) $$($1_ARGS) -classpath "$$($1_CLASSES_DIR)" \
-	    -d $$($1_STUB_CLASSES_DIR) $$($1_DOLLAR_SAFE_CLASSES); \
-	$$(if $$($1_STUB_SOURCES_DIR), \
-	  $$(foreach f, $$($1_JAVA_TARGETS_REL), \
-	    $(MKDIR) -p $$(dir $$($1_STUB_SOURCES_DIR)/$$f) ; \
-	    $(MV) $$($1_STUB_CLASSES_DIR)/$$f $$($1_STUB_SOURCES_DIR)/$$f ; \
-	  ) \
-	) \
-	$(TOUCH) $$@
-
-
-  $1 := $$($1_TARGETS) $$($1_DEP_FILE)
-
-endef
--- a/make/jdk/netbeans/jmx/build.xml	Tue Mar 17 21:35:26 2020 +0100
+++ b/make/jdk/netbeans/jmx/build.xml	Thu Mar 19 15:34:34 2020 -0400
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2020, Oracle and/or its affiliates. All rights reserved.
 
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
@@ -60,37 +60,7 @@
     </target>
 
 
-    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~ -->
-    <!-- Call rmic-jmx subtargets -->
-
-    <target name="-rmic-jmx" depends="-init,-rmic-jmx-jrmp"
-	    description="Calls -init,-rmic-jmx-jrmp"
-    />
-
-
-    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
-    <!-- Generate RMI JRMP stub class files for remote objects -->
-    <!-- Generated java files are kept in a separate directory -->
-
-    <target name="-rmic-jmx-jrmp" depends="-init"
-            description="Generate RMI JRMP stub class files for remote objects. Keep generated java files in separate dir." >
-
-	<!-- Dir to keep generated stub source -->
-        <mkdir dir="${gensrc.dir}" />
-
-        <rmic 	base="${classes.dir}/javax/management"
-		sourcebase="${gensrc.dir}"
-		includeAntRuntime="no"
-		includeJavaRuntime="no"
-		stubversion="1.2"
-		>
-	    <include name="javax/management/remote/rmi/RMIConnectionImpl.class" />
-	    <include name="javax/management/remote/rmi/RMIServerImpl.class" />
-	</rmic>
-
-    </target>
-
-    <target name="-post-compile" depends="-init,-rmic-jmx"
+    <target name="-post-compile" depends="-init"
             description="Jar JMX class files (including RMI stubs)" >
        <mkdir dir="${dist.dir}/lib"/>
        <jar jarfile="${dist.dir}/lib/${jar.jmx.name}"
--- a/make/rmic/Rmic-java.management.rmi.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-#
-# Copyright (c) 2011, 2019, 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# 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.
-#
-
-default: all
-
-include RmicCommon.gmk
-
-##########################################################################################
-#
-# Generate RMI stubs
-#
-
-JMX_RMI_CLASSES := javax.management.remote.rmi.RMIConnectionImpl \
-    javax.management.remote.rmi.RMIServerImpl
-
-# Generate into gensrc dir where sources get picked up for javadoc, then move the classes
-# into the stub classes dir.
-$(eval $(call SetupRMICompilation,RMI_GEN, \
-    CLASSES := $(JMX_RMI_CLASSES), \
-    CLASSES_DIR := $(CLASSES_DIR)/java.management.rmi, \
-    STUB_CLASSES_DIR := $(STUB_CLASSES_DIR)/java.management.rmi, \
-    RUN_V12 := true, \
-    KEEP_GENERATED := true, \
-    STUB_SOURCES_DIR := $(RMIC_GENSRC_DIR)/java.management.rmi, \
-))
-
-##########################################################################################
-
-all: $(RMI_GEN)
-
-.PHONY: all
--- a/make/rmic/Rmic-java.rmi.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-#
-# Copyright (c) 2011, 2013, 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# 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.
-#
-
-default: all
-
-include RmicCommon.gmk
-
-################################################################################
-#
-# Generate RMI stubs
-#
-
-$(eval $(call SetupRMICompilation,RMI_12, \
-    CLASSES := sun.rmi.server.Activation$$ActivationSystemImpl \
-        java.rmi.activation.ActivationGroup, \
-    CLASSES_DIR := $(CLASSES_DIR)/java.rmi, \
-    STUB_CLASSES_DIR := $(STUB_CLASSES_DIR)/java.rmi, \
-    RUN_V12 := true))
-GENCLASSES += $(RMI_12)
-
-
-################################################################################
-
-all: $(RMI_12)
-
-.PHONY: all
--- a/make/rmic/Rmic-jdk.naming.rmi.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#
-# Copyright (c) 2011, 2013, 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# 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.
-#
-
-default: all
-
-include RmicCommon.gmk
-
-##########################################################################################
-#
-# Generate RMI stubs
-#
-
-$(eval $(call SetupRMICompilation,RMI_12, \
-    CLASSES := com.sun.jndi.rmi.registry.ReferenceWrapper, \
-    CLASSES_DIR := $(CLASSES_DIR)/jdk.naming.rmi, \
-    STUB_CLASSES_DIR := $(STUB_CLASSES_DIR)/jdk.naming.rmi, \
-    RUN_V12 := true))
-
-##########################################################################################
-
-all: $(RMI_12)
-
-.PHONY: all
--- a/make/rmic/RmicCommon.gmk	Tue Mar 17 21:35:26 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#
-# Copyright (c) 2011, 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# 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.
-#
-
-default: all
-
-include $(SPEC)
-include MakeBase.gmk
-include RMICompilation.gmk
-
-################################################################################
-
-RMIC_MAIN_CLASS := -m jdk.rmic.interim/sun.rmi.rmic.Main
-
-RMIC := $(JAVA_SMALL) $(INTERIM_RMIC_ARGS) $(RMIC_MAIN_CLASS)
-
-CLASSES_DIR := $(JDK_OUTPUTDIR)/modules
-# NOTE: If the smart javac dependency management is reintroduced, these classes
-# risk interfering with the dependency checking. In that case they will need to
-# be kept separate.
-STUB_CLASSES_DIR := $(JDK_OUTPUTDIR)/modules
-RMIC_GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/rmic
-
-################################################################################
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIConnectionImpl_Stub.java	Thu Mar 19 15:34:34 2020 -0400
@@ -0,0 +1,609 @@
+/*
+ * Copyright (c) 2002, 2020, 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package javax.management.remote.rmi;
+
+/**
+ * RMIConnectionImpl remote stub.
+ */
+@SuppressWarnings({"deprecation", "rawtypes", "unchecked"})
+public final class RMIConnectionImpl_Stub
+        extends java.rmi.server.RemoteStub
+        implements javax.management.remote.rmi.RMIConnection {
+    @java.io.Serial
+    private static final long serialVersionUID = 2;
+
+    private static java.lang.reflect.Method $method_addNotificationListener_0;
+    private static java.lang.reflect.Method $method_addNotificationListeners_1;
+    private static java.lang.reflect.Method $method_close_2;
+    private static java.lang.reflect.Method $method_createMBean_3;
+    private static java.lang.reflect.Method $method_createMBean_4;
+    private static java.lang.reflect.Method $method_createMBean_5;
+    private static java.lang.reflect.Method $method_createMBean_6;
+    private static java.lang.reflect.Method $method_fetchNotifications_7;
+    private static java.lang.reflect.Method $method_getAttribute_8;
+    private static java.lang.reflect.Method $method_getAttributes_9;
+    private static java.lang.reflect.Method $method_getConnectionId_10;
+    private static java.lang.reflect.Method $method_getDefaultDomain_11;
+    private static java.lang.reflect.Method $method_getDomains_12;
+    private static java.lang.reflect.Method $method_getMBeanCount_13;
+    private static java.lang.reflect.Method $method_getMBeanInfo_14;
+    private static java.lang.reflect.Method $method_getObjectInstance_15;
+    private static java.lang.reflect.Method $method_invoke_16;
+    private static java.lang.reflect.Method $method_isInstanceOf_17;
+    private static java.lang.reflect.Method $method_isRegistered_18;
+    private static java.lang.reflect.Method $method_queryMBeans_19;
+    private static java.lang.reflect.Method $method_queryNames_20;
+    private static java.lang.reflect.Method $method_removeNotificationListener_21;
+    private static java.lang.reflect.Method $method_removeNotificationListener_22;
+    private static java.lang.reflect.Method $method_removeNotificationListeners_23;
+    private static java.lang.reflect.Method $method_setAttribute_24;
+    private static java.lang.reflect.Method $method_setAttributes_25;
+    private static java.lang.reflect.Method $method_unregisterMBean_26;
+
+    static {
+        try {
+            $method_addNotificationListener_0 = javax.management.remote.rmi.RMIConnection.class.getMethod("addNotificationListener", new java.lang.Class[]{javax.management.ObjectName.class, javax.management.ObjectName.class, java.rmi.MarshalledObject.class, java.rmi.MarshalledObject.class, javax.security.auth.Subject.class});
+            $method_addNotificationListeners_1 = javax.management.remote.rmi.RMIConnection.class.getMethod("addNotificationListeners", new java.lang.Class[]{javax.management.ObjectName[].class, java.rmi.MarshalledObject[].class, javax.security.auth.Subject[].class});
+            $method_close_2 = java.lang.AutoCloseable.class.getMethod("close", new java.lang.Class[]{});
+            $method_createMBean_3 = javax.management.remote.rmi.RMIConnection.class.getMethod("createMBean", new java.lang.Class[]{java.lang.String.class, javax.management.ObjectName.class, java.rmi.MarshalledObject.class, java.lang.String[].class, javax.security.auth.Subject.class});
+            $method_createMBean_4 = javax.management.remote.rmi.RMIConnection.class.getMethod("createMBean", new java.lang.Class[]{java.lang.String.class, javax.management.ObjectName.class, javax.management.ObjectName.class, java.rmi.MarshalledObject.class, java.lang.String[].class, javax.security.auth.Subject.class});
+            $method_createMBean_5 = javax.management.remote.rmi.RMIConnection.class.getMethod("createMBean", new java.lang.Class[]{java.lang.String.class, javax.management.ObjectName.class, javax.management.ObjectName.class, javax.security.auth.Subject.class});
+            $method_createMBean_6 = javax.management.remote.rmi.RMIConnection.class.getMethod("createMBean", new java.lang.Class[]{java.lang.String.class, javax.management.ObjectName.class, javax.security.auth.Subject.class});
+            $method_fetchNotifications_7 = javax.management.remote.rmi.RMIConnection.class.getMethod("fetchNotifications", new java.lang.Class[]{long.class, int.class, long.class});
+            $method_getAttribute_8 = javax.management.remote.rmi.RMIConnection.class.getMethod("getAttribute", new java.lang.Class[]{javax.management.ObjectName.class, java.lang.String.class, javax.security.auth.Subject.class});
+            $method_getAttributes_9 = javax.management.remote.rmi.RMIConnection.class.getMethod("getAttributes", new java.lang.Class[]{javax.management.ObjectName.class, java.lang.String[].class, javax.security.auth.Subject.class});
+            $method_getConnectionId_10 = javax.management.remote.rmi.RMIConnection.class.getMethod("getConnectionId", new java.lang.Class[]{});
+            $method_getDefaultDomain_11 = javax.management.remote.rmi.RMIConnection.class.getMethod("getDefaultDomain", new java.lang.Class[]{javax.security.auth.Subject.class});
+            $method_getDomains_12 = javax.management.remote.rmi.RMIConnection.class.getMethod("getDomains", new java.lang.Class[]{javax.security.auth.Subject.class});
+            $method_getMBeanCount_13 = javax.management.remote.rmi.RMIConnection.class.getMethod("getMBeanCount", new java.lang.Class[]{javax.security.auth.Subject.class});
+            $method_getMBeanInfo_14 = javax.management.remote.rmi.RMIConnection.class.getMethod("getMBeanInfo", new java.lang.Class[]{javax.management.ObjectName.class, javax.security.auth.Subject.class});
+            $method_getObjectInstance_15 = javax.management.remote.rmi.RMIConnection.class.getMethod("getObjectInstance", new java.lang.Class[]{javax.management.ObjectName.class, javax.security.auth.Subject.class});
+            $method_invoke_16 = javax.management.remote.rmi.RMIConnection.class.getMethod("invoke", new java.lang.Class[]{javax.management.ObjectName.class, java.lang.String.class, java.rmi.MarshalledObject.class, java.lang.String[].class, javax.security.auth.Subject.class});
+            $method_isInstanceOf_17 = javax.management.remote.rmi.RMIConnection.class.getMethod("isInstanceOf", new java.lang.Class[]{javax.management.ObjectName.class, java.lang.String.class, javax.security.auth.Subject.class});
+            $method_isRegistered_18 = javax.management.remote.rmi.RMIConnection.class.getMethod("isRegistered", new java.lang.Class[]{javax.management.ObjectName.class, javax.security.auth.Subject.class});
+            $method_queryMBeans_19 = javax.management.remote.rmi.RMIConnection.class.getMethod("queryMBeans", new java.lang.Class[]{javax.management.ObjectName.class, java.rmi.MarshalledObject.class, javax.security.auth.Subject.class});
+            $method_queryNames_20 = javax.management.remote.rmi.RMIConnection.class.getMethod("queryNames", new java.lang.Class[]{javax.management.ObjectName.class, java.rmi.MarshalledObject.class, javax.security.auth.Subject.class});
+            $method_removeNotificationListener_21 = javax.management.remote.rmi.RMIConnection.class.getMethod("removeNotificationListener", new java.lang.Class[]{javax.management.ObjectName.class, javax.management.ObjectName.class, java.rmi.MarshalledObject.class, java.rmi.MarshalledObject.class, javax.security.auth.Subject.class});
+            $method_removeNotificationListener_22 = javax.management.remote.rmi.RMIConnection.class.getMethod("removeNotificationListener", new java.lang.Class[]{javax.management.ObjectName.class, javax.management.ObjectName.class, javax.security.auth.Subject.class});
+            $method_removeNotificationListeners_23 = javax.management.remote.rmi.RMIConnection.class.getMethod("removeNotificationListeners", new java.lang.Class[]{javax.management.ObjectName.class, java.lang.Integer[].class, javax.security.auth.Subject.class});
+            $method_setAttribute_24 = javax.management.remote.rmi.RMIConnection.class.getMethod("setAttribute", new java.lang.Class[]{javax.management.ObjectName.class, java.rmi.MarshalledObject.class, javax.security.auth.Subject.class});
+            $method_setAttributes_25 = javax.management.remote.rmi.RMIConnection.class.getMethod("setAttributes", new java.lang.Class[]{javax.management.ObjectName.class, java.rmi.MarshalledObject.class, javax.security.auth.Subject.class});
+            $method_unregisterMBean_26 = javax.management.remote.rmi.RMIConnection.class.getMethod("unregisterMBean", new java.lang.Class[]{javax.management.ObjectName.class, javax.security.auth.Subject.class});
+        } catch (java.lang.NoSuchMethodException e) {
+            throw new java.lang.NoSuchMethodError(
+                    "stub class initialization failed");
+        }
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param ref a remote ref
+     */
+    public RMIConnectionImpl_Stub(java.rmi.server.RemoteRef ref) {
+        super(ref);
+    }
+
+    // methods from remote interfaces
+
+    // implementation of addNotificationListener(ObjectName, ObjectName, MarshalledObject, MarshalledObject, Subject)
+    public void addNotificationListener(javax.management.ObjectName $param_ObjectName_1, javax.management.ObjectName $param_ObjectName_2, java.rmi.MarshalledObject $param_MarshalledObject_3, java.rmi.MarshalledObject $param_MarshalledObject_4, javax.security.auth.Subject $param_Subject_5)
+            throws java.io.IOException, javax.management.InstanceNotFoundException {
+        try {
+            ref.invoke(this, $method_addNotificationListener_0, new java.lang.Object[]{$param_ObjectName_1, $param_ObjectName_2, $param_MarshalledObject_3, $param_MarshalledObject_4, $param_Subject_5}, -8578317696269497109L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of addNotificationListeners(ObjectName[], MarshalledObject[], Subject[])
+    public java.lang.Integer[] addNotificationListeners(javax.management.ObjectName[] $param_arrayOf_ObjectName_1, java.rmi.MarshalledObject[] $param_arrayOf_MarshalledObject_2, javax.security.auth.Subject[] $param_arrayOf_Subject_3)
+            throws java.io.IOException, javax.management.InstanceNotFoundException {
+        try {
+            Object $result = ref.invoke(this, $method_addNotificationListeners_1, new java.lang.Object[]{$param_arrayOf_ObjectName_1, $param_arrayOf_MarshalledObject_2, $param_arrayOf_Subject_3}, -5321691879380783377L);
+            return ((java.lang.Integer[]) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of close()
+    public void close()
+            throws java.io.IOException {
+        try {
+            ref.invoke(this, $method_close_2, null, -4742752445160157748L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of createMBean(String, ObjectName, MarshalledObject, String[], Subject)
+    public javax.management.ObjectInstance createMBean(java.lang.String $param_String_1, javax.management.ObjectName $param_ObjectName_2, java.rmi.MarshalledObject $param_MarshalledObject_3, java.lang.String[] $param_arrayOf_String_4, javax.security.auth.Subject $param_Subject_5)
+            throws java.io.IOException, javax.management.InstanceAlreadyExistsException, javax.management.MBeanException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_createMBean_3, new java.lang.Object[]{$param_String_1, $param_ObjectName_2, $param_MarshalledObject_3, $param_arrayOf_String_4, $param_Subject_5}, 4867822117947806114L);
+            return ((javax.management.ObjectInstance) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceAlreadyExistsException e) {
+            throw e;
+        } catch (javax.management.MBeanException e) {
+            throw e;
+        } catch (javax.management.NotCompliantMBeanException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of createMBean(String, ObjectName, ObjectName, MarshalledObject, String[], Subject)
+    public javax.management.ObjectInstance createMBean(java.lang.String $param_String_1, javax.management.ObjectName $param_ObjectName_2, javax.management.ObjectName $param_ObjectName_3, java.rmi.MarshalledObject $param_MarshalledObject_4, java.lang.String[] $param_arrayOf_String_5, javax.security.auth.Subject $param_Subject_6)
+            throws java.io.IOException, javax.management.InstanceAlreadyExistsException, javax.management.InstanceNotFoundException, javax.management.MBeanException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_createMBean_4, new java.lang.Object[]{$param_String_1, $param_ObjectName_2, $param_ObjectName_3, $param_MarshalledObject_4, $param_arrayOf_String_5, $param_Subject_6}, -6604955182088909937L);
+            return ((javax.management.ObjectInstance) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceAlreadyExistsException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.MBeanException e) {
+            throw e;
+        } catch (javax.management.NotCompliantMBeanException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of createMBean(String, ObjectName, ObjectName, Subject)
+    public javax.management.ObjectInstance createMBean(java.lang.String $param_String_1, javax.management.ObjectName $param_ObjectName_2, javax.management.ObjectName $param_ObjectName_3, javax.security.auth.Subject $param_Subject_4)
+            throws java.io.IOException, javax.management.InstanceAlreadyExistsException, javax.management.InstanceNotFoundException, javax.management.MBeanException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_createMBean_5, new java.lang.Object[]{$param_String_1, $param_ObjectName_2, $param_ObjectName_3, $param_Subject_4}, -8679469989872508324L);
+            return ((javax.management.ObjectInstance) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceAlreadyExistsException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.MBeanException e) {
+            throw e;
+        } catch (javax.management.NotCompliantMBeanException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of createMBean(String, ObjectName, Subject)
+    public javax.management.ObjectInstance createMBean(java.lang.String $param_String_1, javax.management.ObjectName $param_ObjectName_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException, javax.management.InstanceAlreadyExistsException, javax.management.MBeanException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_createMBean_6, new java.lang.Object[]{$param_String_1, $param_ObjectName_2, $param_Subject_3}, 2510753813974665446L);
+            return ((javax.management.ObjectInstance) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceAlreadyExistsException e) {
+            throw e;
+        } catch (javax.management.MBeanException e) {
+            throw e;
+        } catch (javax.management.NotCompliantMBeanException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of fetchNotifications(long, int, long)
+    public javax.management.remote.NotificationResult fetchNotifications(long $param_long_1, int $param_int_2, long $param_long_3)
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_fetchNotifications_7, new java.lang.Object[]{new java.lang.Long($param_long_1), new java.lang.Integer($param_int_2), new java.lang.Long($param_long_3)}, -5037523307973544478L);
+            return ((javax.management.remote.NotificationResult) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getAttribute(ObjectName, String, Subject)
+    public java.lang.Object getAttribute(javax.management.ObjectName $param_ObjectName_1, java.lang.String $param_String_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException, javax.management.AttributeNotFoundException, javax.management.InstanceNotFoundException, javax.management.MBeanException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_getAttribute_8, new java.lang.Object[]{$param_ObjectName_1, $param_String_2, $param_Subject_3}, -1089783104982388203L);
+            return $result;
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.AttributeNotFoundException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.MBeanException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getAttributes(ObjectName, String[], Subject)
+    public javax.management.AttributeList getAttributes(javax.management.ObjectName $param_ObjectName_1, java.lang.String[] $param_arrayOf_String_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException, javax.management.InstanceNotFoundException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_getAttributes_9, new java.lang.Object[]{$param_ObjectName_1, $param_arrayOf_String_2, $param_Subject_3}, 6285293806596348999L);
+            return ((javax.management.AttributeList) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getConnectionId()
+    public java.lang.String getConnectionId()
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_getConnectionId_10, null, -67907180346059933L);
+            return ((java.lang.String) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getDefaultDomain(Subject)
+    public java.lang.String getDefaultDomain(javax.security.auth.Subject $param_Subject_1)
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_getDefaultDomain_11, new java.lang.Object[]{$param_Subject_1}, 6047668923998658472L);
+            return ((java.lang.String) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getDomains(Subject)
+    public java.lang.String[] getDomains(javax.security.auth.Subject $param_Subject_1)
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_getDomains_12, new java.lang.Object[]{$param_Subject_1}, -6662314179953625551L);
+            return ((java.lang.String[]) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getMBeanCount(Subject)
+    public java.lang.Integer getMBeanCount(javax.security.auth.Subject $param_Subject_1)
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_getMBeanCount_13, new java.lang.Object[]{$param_Subject_1}, -2042362057335820635L);
+            return ((java.lang.Integer) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getMBeanInfo(ObjectName, Subject)
+    public javax.management.MBeanInfo getMBeanInfo(javax.management.ObjectName $param_ObjectName_1, javax.security.auth.Subject $param_Subject_2)
+            throws java.io.IOException, javax.management.InstanceNotFoundException, javax.management.IntrospectionException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_getMBeanInfo_14, new java.lang.Object[]{$param_ObjectName_1, $param_Subject_2}, -7404813916326233354L);
+            return ((javax.management.MBeanInfo) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.IntrospectionException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getObjectInstance(ObjectName, Subject)
+    public javax.management.ObjectInstance getObjectInstance(javax.management.ObjectName $param_ObjectName_1, javax.security.auth.Subject $param_Subject_2)
+            throws java.io.IOException, javax.management.InstanceNotFoundException {
+        try {
+            Object $result = ref.invoke(this, $method_getObjectInstance_15, new java.lang.Object[]{$param_ObjectName_1, $param_Subject_2}, 6950095694996159938L);
+            return ((javax.management.ObjectInstance) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of invoke(ObjectName, String, MarshalledObject, String[], Subject)
+    public java.lang.Object invoke(javax.management.ObjectName $param_ObjectName_1, java.lang.String $param_String_2, java.rmi.MarshalledObject $param_MarshalledObject_3, java.lang.String[] $param_arrayOf_String_4, javax.security.auth.Subject $param_Subject_5)
+            throws java.io.IOException, javax.management.InstanceNotFoundException, javax.management.MBeanException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_invoke_16, new java.lang.Object[]{$param_ObjectName_1, $param_String_2, $param_MarshalledObject_3, $param_arrayOf_String_4, $param_Subject_5}, 1434350937885235744L);
+            return $result;
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.MBeanException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of isInstanceOf(ObjectName, String, Subject)
+    public boolean isInstanceOf(javax.management.ObjectName $param_ObjectName_1, java.lang.String $param_String_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException, javax.management.InstanceNotFoundException {
+        try {
+            Object $result = ref.invoke(this, $method_isInstanceOf_17, new java.lang.Object[]{$param_ObjectName_1, $param_String_2, $param_Subject_3}, -2147516868461740814L);
+            return ((java.lang.Boolean) $result).booleanValue();
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of isRegistered(ObjectName, Subject)
+    public boolean isRegistered(javax.management.ObjectName $param_ObjectName_1, javax.security.auth.Subject $param_Subject_2)
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_isRegistered_18, new java.lang.Object[]{$param_ObjectName_1, $param_Subject_2}, 8325683335228268564L);
+            return ((java.lang.Boolean) $result).booleanValue();
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of queryMBeans(ObjectName, MarshalledObject, Subject)
+    public java.util.Set queryMBeans(javax.management.ObjectName $param_ObjectName_1, java.rmi.MarshalledObject $param_MarshalledObject_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_queryMBeans_19, new java.lang.Object[]{$param_ObjectName_1, $param_MarshalledObject_2, $param_Subject_3}, 2915881009400597976L);
+            return ((java.util.Set) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of queryNames(ObjectName, MarshalledObject, Subject)
+    public java.util.Set queryNames(javax.management.ObjectName $param_ObjectName_1, java.rmi.MarshalledObject $param_MarshalledObject_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_queryNames_20, new java.lang.Object[]{$param_ObjectName_1, $param_MarshalledObject_2, $param_Subject_3}, 9152567528369059802L);
+            return ((java.util.Set) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of removeNotificationListener(ObjectName, ObjectName, MarshalledObject, MarshalledObject, Subject)
+    public void removeNotificationListener(javax.management.ObjectName $param_ObjectName_1, javax.management.ObjectName $param_ObjectName_2, java.rmi.MarshalledObject $param_MarshalledObject_3, java.rmi.MarshalledObject $param_MarshalledObject_4, javax.security.auth.Subject $param_Subject_5)
+            throws java.io.IOException, javax.management.InstanceNotFoundException, javax.management.ListenerNotFoundException {
+        try {
+            ref.invoke(this, $method_removeNotificationListener_21, new java.lang.Object[]{$param_ObjectName_1, $param_ObjectName_2, $param_MarshalledObject_3, $param_MarshalledObject_4, $param_Subject_5}, 2578029900065214857L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.ListenerNotFoundException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of removeNotificationListener(ObjectName, ObjectName, Subject)
+    public void removeNotificationListener(javax.management.ObjectName $param_ObjectName_1, javax.management.ObjectName $param_ObjectName_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException, javax.management.InstanceNotFoundException, javax.management.ListenerNotFoundException {
+        try {
+            ref.invoke(this, $method_removeNotificationListener_22, new java.lang.Object[]{$param_ObjectName_1, $param_ObjectName_2, $param_Subject_3}, 6604721169198089513L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.ListenerNotFoundException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of removeNotificationListeners(ObjectName, Integer[], Subject)
+    public void removeNotificationListeners(javax.management.ObjectName $param_ObjectName_1, java.lang.Integer[] $param_arrayOf_Integer_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException, javax.management.InstanceNotFoundException, javax.management.ListenerNotFoundException {
+        try {
+            ref.invoke(this, $method_removeNotificationListeners_23, new java.lang.Object[]{$param_ObjectName_1, $param_arrayOf_Integer_2, $param_Subject_3}, 2549120024456183446L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.ListenerNotFoundException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of setAttribute(ObjectName, MarshalledObject, Subject)
+    public void setAttribute(javax.management.ObjectName $param_ObjectName_1, java.rmi.MarshalledObject $param_MarshalledObject_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException, javax.management.AttributeNotFoundException, javax.management.InstanceNotFoundException, javax.management.InvalidAttributeValueException, javax.management.MBeanException, javax.management.ReflectionException {
+        try {
+            ref.invoke(this, $method_setAttribute_24, new java.lang.Object[]{$param_ObjectName_1, $param_MarshalledObject_2, $param_Subject_3}, 6738606893952597516L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.AttributeNotFoundException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.InvalidAttributeValueException e) {
+            throw e;
+        } catch (javax.management.MBeanException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of setAttributes(ObjectName, MarshalledObject, Subject)
+    public javax.management.AttributeList setAttributes(javax.management.ObjectName $param_ObjectName_1, java.rmi.MarshalledObject $param_MarshalledObject_2, javax.security.auth.Subject $param_Subject_3)
+            throws java.io.IOException, javax.management.InstanceNotFoundException, javax.management.ReflectionException {
+        try {
+            Object $result = ref.invoke(this, $method_setAttributes_25, new java.lang.Object[]{$param_ObjectName_1, $param_MarshalledObject_2, $param_Subject_3}, -230470228399681820L);
+            return ((javax.management.AttributeList) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.ReflectionException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of unregisterMBean(ObjectName, Subject)
+    public void unregisterMBean(javax.management.ObjectName $param_ObjectName_1, javax.security.auth.Subject $param_Subject_2)
+            throws java.io.IOException, javax.management.InstanceNotFoundException, javax.management.MBeanRegistrationException {
+        try {
+            ref.invoke(this, $method_unregisterMBean_26, new java.lang.Object[]{$param_ObjectName_1, $param_Subject_2}, -159498580868721452L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (javax.management.InstanceNotFoundException e) {
+            throw e;
+        } catch (javax.management.MBeanRegistrationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIServerImpl_Stub.java	Thu Mar 19 15:34:34 2020 -0400
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2002, 2020, 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package javax.management.remote.rmi;
+
+/**
+ * RMIServerImpl remote stub.
+ */
+@SuppressWarnings({"deprecation", "rawtypes", "unchecked"})
+public final class RMIServerImpl_Stub
+        extends java.rmi.server.RemoteStub
+        implements javax.management.remote.rmi.RMIServer {
+    @java.io.Serial
+    private static final long serialVersionUID = 2;
+
+    private static java.lang.reflect.Method $method_getVersion_0;
+    private static java.lang.reflect.Method $method_newClient_1;
+
+    static {
+        try {
+            $method_getVersion_0 = javax.management.remote.rmi.RMIServer.class.getMethod("getVersion", new java.lang.Class[]{});
+            $method_newClient_1 = javax.management.remote.rmi.RMIServer.class.getMethod("newClient", new java.lang.Class[]{java.lang.Object.class});
+        } catch (java.lang.NoSuchMethodException e) {
+            throw new java.lang.NoSuchMethodError(
+                    "stub class initialization failed");
+        }
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param ref  a remote ref
+     */
+    public RMIServerImpl_Stub(java.rmi.server.RemoteRef ref) {
+        super(ref);
+    }
+
+    // methods from remote interfaces
+
+    // Implementation of getVersion()
+    public java.lang.String getVersion()
+            throws java.rmi.RemoteException {
+        try {
+            Object $result = ref.invoke(this, $method_getVersion_0, null, -8081107751519807347L);
+            return ((java.lang.String) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // Implementation of newClient(Object)
+    public javax.management.remote.rmi.RMIConnection newClient(java.lang.Object $param_Object_1)
+            throws java.io.IOException {
+        try {
+            Object $result = ref.invoke(this, $method_newClient_1, new java.lang.Object[]{$param_Object_1}, -1089742558549201240L);
+            return ((javax.management.remote.rmi.RMIConnection) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.io.IOException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.rmi/share/classes/java/rmi/activation/ActivationGroup_Stub.java	Thu Mar 19 15:34:34 2020 -0400
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2002, 2020, 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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 java.rmi.activation;
+
+import java.lang.reflect.Method;
+import java.rmi.MarshalledObject;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.UnexpectedException;
+import java.rmi.server.RemoteRef;
+import java.rmi.server.RemoteStub;
+
+/**
+ * {@code ActivationGroup_Stub} is a stub class for the subclasses of {@code java.rmi.activation.ActivationGroup}
+ * that are exported as a {@code java.rmi.server.UnicastRemoteObject}.
+ *
+ * @since 1.2
+ */
+@SuppressWarnings({"rawtypes", "unchecked", "deprecation"})
+public final class ActivationGroup_Stub
+        extends RemoteStub
+        implements ActivationInstantiator, Remote {
+
+    @java.io.Serial
+    private static final long serialVersionUID = 2;
+
+    private static Method $method_newInstance_0;
+
+    static {
+        try {
+            $method_newInstance_0 =
+                    ActivationInstantiator.class.getMethod("newInstance",
+                            new Class<?>[] {ActivationID.class, ActivationDesc.class});
+        } catch (NoSuchMethodException e) {
+            throw new NoSuchMethodError(
+                    "stub class initialization failed");
+        }
+    }
+
+    /**
+     * Constructs a stub for the {@code ActivationGroup} class.
+     * It invokes the superclass {@code RemoteStub(RemoteRef)}
+     * constructor with its argument, {@code ref}.
+     *
+     * @param ref a remote ref
+     */
+    public ActivationGroup_Stub(RemoteRef ref) {
+        super(ref);
+    }
+
+    /**
+     * Stub method for {@code ActivationGroup.newInstance}.  Invokes
+     * the {@code invoke} method on this instance's
+     * {@code RemoteObject.ref} field, with {@code this} as the
+     * first argument, a two-element {@code Object[]} as the second
+     * argument (with {@code id} as the first element and
+     * {@code desc} as the second element), and -5274445189091581345L
+     * as the third argument, and returns the result.  If that invocation
+     * throws a {@code RuntimeException}, {@code RemoteException},
+     * or an {@code ActivationException}, then that exception is
+     * thrown to the caller.  If that invocation throws any other
+     * {@code java.lang.Exception}, then a
+     * {@code java.rmi.UnexpectedException} is thrown to the caller
+     * with the original exception as the cause.
+     *
+     * @param id   an activation identifier
+     * @param desc an activation descriptor
+     * @return the result of the invocation
+     * @throws RemoteException     if invocation results in a {@code RemoteException}
+     * @throws ActivationException if invocation results in an {@code ActivationException}
+     */
+    public MarshalledObject newInstance(ActivationID id,
+                                        ActivationDesc desc)
+            throws RemoteException, ActivationException {
+        try {
+            Object $result = ref.invoke(this, $method_newInstance_0,
+                    new Object[]{id, desc}, -5274445189091581345L);
+            return ((MarshalledObject) $result);
+        } catch (RuntimeException | RemoteException | ActivationException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new UnexpectedException("undeclared checked exception", e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.rmi/share/classes/sun/rmi/server/Activation$ActivationSystemImpl_Stub.java	Thu Mar 19 15:34:34 2020 -0400
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 1997, 2020, 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.  Oracle designates this
+* particular file as subject to the "Classpath" exception as provided
+* by Oracle in the LICENSE file that accompanied this code.
+*
+* 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.
+*/
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package sun.rmi.server;
+
+/**
+ * Activation$ActivationSystemImpl_Stub.
+ */
+@SuppressWarnings({"deprecation", "rawtypes", "unchecked"})
+public final class Activation$ActivationSystemImpl_Stub
+        extends java.rmi.server.RemoteStub
+        implements java.rmi.activation.ActivationSystem, java.rmi.Remote {
+    private static final long serialVersionUID = 2;
+
+    private static java.lang.reflect.Method $method_activeGroup_0;
+    private static java.lang.reflect.Method $method_getActivationDesc_1;
+    private static java.lang.reflect.Method $method_getActivationGroupDesc_2;
+    private static java.lang.reflect.Method $method_registerGroup_3;
+    private static java.lang.reflect.Method $method_registerObject_4;
+    private static java.lang.reflect.Method $method_setActivationDesc_5;
+    private static java.lang.reflect.Method $method_setActivationGroupDesc_6;
+    private static java.lang.reflect.Method $method_shutdown_7;
+    private static java.lang.reflect.Method $method_unregisterGroup_8;
+    private static java.lang.reflect.Method $method_unregisterObject_9;
+
+    static {
+        try {
+            $method_activeGroup_0 = java.rmi.activation.ActivationSystem.class.getMethod("activeGroup", new java.lang.Class[]{java.rmi.activation.ActivationGroupID.class, java.rmi.activation.ActivationInstantiator.class, long.class});
+            $method_getActivationDesc_1 = java.rmi.activation.ActivationSystem.class.getMethod("getActivationDesc", new java.lang.Class[]{java.rmi.activation.ActivationID.class});
+            $method_getActivationGroupDesc_2 = java.rmi.activation.ActivationSystem.class.getMethod("getActivationGroupDesc", new java.lang.Class[]{java.rmi.activation.ActivationGroupID.class});
+            $method_registerGroup_3 = java.rmi.activation.ActivationSystem.class.getMethod("registerGroup", new java.lang.Class[]{java.rmi.activation.ActivationGroupDesc.class});
+            $method_registerObject_4 = java.rmi.activation.ActivationSystem.class.getMethod("registerObject", new java.lang.Class[]{java.rmi.activation.ActivationDesc.class});
+            $method_setActivationDesc_5 = java.rmi.activation.ActivationSystem.class.getMethod("setActivationDesc", new java.lang.Class[]{java.rmi.activation.ActivationID.class, java.rmi.activation.ActivationDesc.class});
+            $method_setActivationGroupDesc_6 = java.rmi.activation.ActivationSystem.class.getMethod("setActivationGroupDesc", new java.lang.Class[]{java.rmi.activation.ActivationGroupID.class, java.rmi.activation.ActivationGroupDesc.class});
+            $method_shutdown_7 = java.rmi.activation.ActivationSystem.class.getMethod("shutdown", new java.lang.Class[]{});
+            $method_unregisterGroup_8 = java.rmi.activation.ActivationSystem.class.getMethod("unregisterGroup", new java.lang.Class[]{java.rmi.activation.ActivationGroupID.class});
+            $method_unregisterObject_9 = java.rmi.activation.ActivationSystem.class.getMethod("unregisterObject", new java.lang.Class[]{java.rmi.activation.ActivationID.class});
+        } catch (java.lang.NoSuchMethodException e) {
+            throw new java.lang.NoSuchMethodError(
+                    "stub class initialization failed");
+        }
+    }
+
+    // constructors
+    public Activation$ActivationSystemImpl_Stub(java.rmi.server.RemoteRef ref) {
+        super(ref);
+    }
+
+    // methods from remote interfaces
+
+    // implementation of activeGroup(ActivationGroupID, ActivationInstantiator, long)
+    public java.rmi.activation.ActivationMonitor activeGroup(java.rmi.activation.ActivationGroupID $param_ActivationGroupID_1, java.rmi.activation.ActivationInstantiator $param_ActivationInstantiator_2, long $param_long_3)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException, java.rmi.activation.UnknownGroupException {
+        try {
+            Object $result = ref.invoke(this, $method_activeGroup_0, new java.lang.Object[]{$param_ActivationGroupID_1, $param_ActivationInstantiator_2, new java.lang.Long($param_long_3)}, -4575843150759415294L);
+            return ((java.rmi.activation.ActivationMonitor) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getActivationDesc(ActivationID)
+    public java.rmi.activation.ActivationDesc getActivationDesc(java.rmi.activation.ActivationID $param_ActivationID_1)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException, java.rmi.activation.UnknownObjectException {
+        try {
+            Object $result = ref.invoke(this, $method_getActivationDesc_1, new java.lang.Object[]{$param_ActivationID_1}, 4830055440982622087L);
+            return ((java.rmi.activation.ActivationDesc) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of getActivationGroupDesc(ActivationGroupID)
+    public java.rmi.activation.ActivationGroupDesc getActivationGroupDesc(java.rmi.activation.ActivationGroupID $param_ActivationGroupID_1)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException, java.rmi.activation.UnknownGroupException {
+        try {
+            Object $result = ref.invoke(this, $method_getActivationGroupDesc_2, new java.lang.Object[]{$param_ActivationGroupID_1}, -8701843806548736528L);
+            return ((java.rmi.activation.ActivationGroupDesc) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of registerGroup(ActivationGroupDesc)
+    public java.rmi.activation.ActivationGroupID registerGroup(java.rmi.activation.ActivationGroupDesc $param_ActivationGroupDesc_1)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException {
+        try {
+            Object $result = ref.invoke(this, $method_registerGroup_3, new java.lang.Object[]{$param_ActivationGroupDesc_1}, 6921515268192657754L);
+            return ((java.rmi.activation.ActivationGroupID) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of registerObject(ActivationDesc)
+    public java.rmi.activation.ActivationID registerObject(java.rmi.activation.ActivationDesc $param_ActivationDesc_1)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException, java.rmi.activation.UnknownGroupException {
+        try {
+            Object $result = ref.invoke(this, $method_registerObject_4, new java.lang.Object[]{$param_ActivationDesc_1}, -3006759798994351347L);
+            return ((java.rmi.activation.ActivationID) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of setActivationDesc(ActivationID, ActivationDesc)
+    public java.rmi.activation.ActivationDesc setActivationDesc(java.rmi.activation.ActivationID $param_ActivationID_1, java.rmi.activation.ActivationDesc $param_ActivationDesc_2)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException, java.rmi.activation.UnknownGroupException, java.rmi.activation.UnknownObjectException {
+        try {
+            Object $result = ref.invoke(this, $method_setActivationDesc_5, new java.lang.Object[]{$param_ActivationID_1, $param_ActivationDesc_2}, 7128043237057180796L);
+            return ((java.rmi.activation.ActivationDesc) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of setActivationGroupDesc(ActivationGroupID, ActivationGroupDesc)
+    public java.rmi.activation.ActivationGroupDesc setActivationGroupDesc(java.rmi.activation.ActivationGroupID $param_ActivationGroupID_1, java.rmi.activation.ActivationGroupDesc $param_ActivationGroupDesc_2)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException, java.rmi.activation.UnknownGroupException {
+        try {
+            Object $result = ref.invoke(this, $method_setActivationGroupDesc_6, new java.lang.Object[]{$param_ActivationGroupID_1, $param_ActivationGroupDesc_2}, 1213918527826541191L);
+            return ((java.rmi.activation.ActivationGroupDesc) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of shutdown()
+    public void shutdown()
+            throws java.rmi.RemoteException {
+        try {
+            ref.invoke(this, $method_shutdown_7, null, -7207851917985848402L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of unregisterGroup(ActivationGroupID)
+    public void unregisterGroup(java.rmi.activation.ActivationGroupID $param_ActivationGroupID_1)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException, java.rmi.activation.UnknownGroupException {
+        try {
+            ref.invoke(this, $method_unregisterGroup_8, new java.lang.Object[]{$param_ActivationGroupID_1}, 3768097077835970701L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+
+    // implementation of unregisterObject(ActivationID)
+    public void unregisterObject(java.rmi.activation.ActivationID $param_ActivationID_1)
+            throws java.rmi.RemoteException, java.rmi.activation.ActivationException, java.rmi.activation.UnknownObjectException {
+        try {
+            ref.invoke(this, $method_unregisterObject_9, new java.lang.Object[]{$param_ActivationID_1}, -6843850585331411084L);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (java.rmi.activation.ActivationException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+}
--- a/src/java.rmi/share/doc/stub/java/rmi/activation/ActivationGroup_Stub.java	Tue Mar 17 21:35:26 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2002, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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 java.rmi.activation;
-
-/**
- * <code>ActivationGroup_Stub</code> is a stub class
- * for the subclasses of <code>java.rmi.activation.ActivationGroup</code>
- * that are exported as a <code>java.rmi.server.UnicastRemoteObject</code>.
- *
- * @since       1.2
- */
-public final class ActivationGroup_Stub
-    extends java.rmi.server.RemoteStub
-    implements java.rmi.activation.ActivationInstantiator, java.rmi.Remote
-{
-    /**
-     * Constructs a stub for the <code>ActivationGroup</code> class.  It
-     * invokes the superclass <code>RemoteStub(RemoteRef)</code>
-     * constructor with its argument, <code>ref</code>.
-     *
-     * @param   ref a remote ref
-     */
-    public ActivationGroup_Stub(java.rmi.server.RemoteRef ref) {
-    }
-
-    /**
-     * Stub method for <code>ActivationGroup.newInstance</code>.  Invokes
-     * the <code>invoke</code> method on this instance's
-     * <code>RemoteObject.ref</code> field, with <code>this</code> as the
-     * first argument, a two-element <code>Object[]</code> as the second
-     * argument (with <code>id</code> as the first element and
-     * <code>desc</code> as the second element), and -5274445189091581345L
-     * as the third argument, and returns the result.  If that invocation
-     * throws a <code>RuntimeException</code>, <code>RemoteException</code>,
-     * or an <code>ActivationException</code>, then that exception is
-     * thrown to the caller.  If that invocation throws any other
-     * <code>java.lang.Exception</code>, then a
-     * <code>java.rmi.UnexpectedException</code> is thrown to the caller
-     * with the original exception as the cause.
-     *
-     * @param   id an activation identifier
-     * @param   desc an activation descriptor
-     * @return  the result of the invocation
-     * @throws  java.rmi.RemoteException if invocation results in
-     *          a <code>RemoteException</code>
-     * @throws  java.rmi.activation.ActivationException if invocation
-     *          results in an <code>ActivationException</code>
-     */
-    public java.rmi.MarshalledObject newInstance(
-                                java.rmi.activation.ActivationID id,
-                                java.rmi.activation.ActivationDesc desc)
-        throws java.rmi.RemoteException,
-            java.rmi.activation.ActivationException
-    {
-        return null;
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.naming.rmi/share/classes/com/sun/jndi/rmi/registry/ReferenceWrapper_Stub.java	Thu Mar 19 15:34:34 2020 -0400
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 1999, 2020, 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+// Stub class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+package com.sun.jndi.rmi.registry;
+
+/**
+ * ReferenceWrapper_Stub.
+ */
+@SuppressWarnings({"deprecation", "rawtypes", "unchecked"})
+public final class ReferenceWrapper_Stub
+        extends java.rmi.server.RemoteStub
+        implements com.sun.jndi.rmi.registry.RemoteReference, java.rmi.Remote {
+    private static final long serialVersionUID = 2;
+
+    private static java.lang.reflect.Method $method_getReference_0;
+
+    static {
+        try {
+            $method_getReference_0 = com.sun.jndi.rmi.registry.RemoteReference.class.getMethod("getReference", new java.lang.Class[]{});
+        } catch (java.lang.NoSuchMethodException e) {
+            throw new java.lang.NoSuchMethodError(
+                    "stub class initialization failed");
+        }
+    }
+
+    // constructors
+    public ReferenceWrapper_Stub(java.rmi.server.RemoteRef ref) {
+        super(ref);
+    }
+
+    // methods from remote interfaces
+
+    // implementation of getReference()
+    public javax.naming.Reference getReference()
+            throws java.rmi.RemoteException, javax.naming.NamingException {
+        try {
+            Object $result = ref.invoke(this, $method_getReference_0, null, 3529874867989176284L);
+            return ((javax.naming.Reference) $result);
+        } catch (java.lang.RuntimeException e) {
+            throw e;
+        } catch (java.rmi.RemoteException e) {
+            throw e;
+        } catch (javax.naming.NamingException e) {
+            throw e;
+        } catch (java.lang.Exception e) {
+            throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+        }
+    }
+}