changeset 990:a7836e00ad6b

Merge
author lana
date Thu, 29 Jan 2009 18:33:52 -0800
parents 36da64dc6545 (current diff) 527b426497a2 (diff)
children f0978a1137fe
files src/share/classes/com/sun/jmx/namespace/JMXNamespaceUtils.java src/share/classes/sun/nio/cs/IBM437.java src/share/classes/sun/nio/cs/IBM737.java src/share/classes/sun/nio/cs/IBM775.java src/share/classes/sun/nio/cs/IBM850.java src/share/classes/sun/nio/cs/IBM852.java src/share/classes/sun/nio/cs/IBM855.java src/share/classes/sun/nio/cs/IBM857.java src/share/classes/sun/nio/cs/IBM858.java src/share/classes/sun/nio/cs/IBM862.java src/share/classes/sun/nio/cs/IBM866.java src/share/classes/sun/nio/cs/IBM874.java src/share/classes/sun/nio/cs/ISO_8859_13.java src/share/classes/sun/nio/cs/ISO_8859_15.java src/share/classes/sun/nio/cs/ISO_8859_2.java src/share/classes/sun/nio/cs/ISO_8859_4.java src/share/classes/sun/nio/cs/ISO_8859_5.java src/share/classes/sun/nio/cs/ISO_8859_7.java src/share/classes/sun/nio/cs/ISO_8859_9.java src/share/classes/sun/nio/cs/KOI8_R.java src/share/classes/sun/nio/cs/KOI8_U.java src/share/classes/sun/nio/cs/MS1250.java src/share/classes/sun/nio/cs/MS1251.java src/share/classes/sun/nio/cs/MS1252.java src/share/classes/sun/nio/cs/MS1253.java src/share/classes/sun/nio/cs/MS1254.java src/share/classes/sun/nio/cs/MS1257.java src/share/classes/sun/nio/cs/ext/IBM037.java src/share/classes/sun/nio/cs/ext/IBM1006.java src/share/classes/sun/nio/cs/ext/IBM1025.java src/share/classes/sun/nio/cs/ext/IBM1026.java src/share/classes/sun/nio/cs/ext/IBM1046.java src/share/classes/sun/nio/cs/ext/IBM1047.java src/share/classes/sun/nio/cs/ext/IBM1097.java src/share/classes/sun/nio/cs/ext/IBM1098.java src/share/classes/sun/nio/cs/ext/IBM1112.java src/share/classes/sun/nio/cs/ext/IBM1122.java src/share/classes/sun/nio/cs/ext/IBM1123.java src/share/classes/sun/nio/cs/ext/IBM1124.java src/share/classes/sun/nio/cs/ext/IBM1140.java src/share/classes/sun/nio/cs/ext/IBM1141.java src/share/classes/sun/nio/cs/ext/IBM1142.java src/share/classes/sun/nio/cs/ext/IBM1143.java src/share/classes/sun/nio/cs/ext/IBM1144.java src/share/classes/sun/nio/cs/ext/IBM1145.java src/share/classes/sun/nio/cs/ext/IBM1146.java src/share/classes/sun/nio/cs/ext/IBM1147.java src/share/classes/sun/nio/cs/ext/IBM1148.java src/share/classes/sun/nio/cs/ext/IBM1149.java src/share/classes/sun/nio/cs/ext/IBM273.java src/share/classes/sun/nio/cs/ext/IBM277.java src/share/classes/sun/nio/cs/ext/IBM278.java src/share/classes/sun/nio/cs/ext/IBM280.java src/share/classes/sun/nio/cs/ext/IBM284.java src/share/classes/sun/nio/cs/ext/IBM285.java src/share/classes/sun/nio/cs/ext/IBM297.java src/share/classes/sun/nio/cs/ext/IBM420.java src/share/classes/sun/nio/cs/ext/IBM424.java src/share/classes/sun/nio/cs/ext/IBM500.java src/share/classes/sun/nio/cs/ext/IBM838.java src/share/classes/sun/nio/cs/ext/IBM856.java src/share/classes/sun/nio/cs/ext/IBM860.java src/share/classes/sun/nio/cs/ext/IBM861.java src/share/classes/sun/nio/cs/ext/IBM863.java src/share/classes/sun/nio/cs/ext/IBM864.java src/share/classes/sun/nio/cs/ext/IBM865.java src/share/classes/sun/nio/cs/ext/IBM868.java src/share/classes/sun/nio/cs/ext/IBM869.java src/share/classes/sun/nio/cs/ext/IBM870.java src/share/classes/sun/nio/cs/ext/IBM871.java src/share/classes/sun/nio/cs/ext/IBM875.java src/share/classes/sun/nio/cs/ext/IBM918.java src/share/classes/sun/nio/cs/ext/IBM921.java src/share/classes/sun/nio/cs/ext/IBM922.java src/share/classes/sun/nio/cs/ext/ISO_8859_11.java src/share/classes/sun/nio/cs/ext/ISO_8859_3.java src/share/classes/sun/nio/cs/ext/ISO_8859_6.java src/share/classes/sun/nio/cs/ext/ISO_8859_8.java src/share/classes/sun/nio/cs/ext/MS1255.java src/share/classes/sun/nio/cs/ext/MS1256.java src/share/classes/sun/nio/cs/ext/MS1258.java src/share/classes/sun/nio/cs/ext/MS874.java src/share/classes/sun/nio/cs/ext/MacArabic.java src/share/classes/sun/nio/cs/ext/MacCentralEurope.java src/share/classes/sun/nio/cs/ext/MacCroatian.java src/share/classes/sun/nio/cs/ext/MacCyrillic.java src/share/classes/sun/nio/cs/ext/MacDingbat.java src/share/classes/sun/nio/cs/ext/MacGreek.java src/share/classes/sun/nio/cs/ext/MacHebrew.java src/share/classes/sun/nio/cs/ext/MacIceland.java src/share/classes/sun/nio/cs/ext/MacRoman.java src/share/classes/sun/nio/cs/ext/MacRomania.java src/share/classes/sun/nio/cs/ext/MacSymbol.java src/share/classes/sun/nio/cs/ext/MacThai.java src/share/classes/sun/nio/cs/ext/MacTurkish.java src/share/classes/sun/nio/cs/ext/MacUkraine.java src/share/classes/sun/nio/cs/ext/TIS_620.java
diffstat 726 files changed, 43365 insertions(+), 31368 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Thu Jan 29 13:19:34 2009 +0300
+++ b/.hgtags	Thu Jan 29 18:33:52 2009 -0800
@@ -12,3 +12,10 @@
 cf4894b78ceb966326e93bf221db0c2d14d59218 jdk7-b35
 134fd1a656ea85acd1f97f6700f75029b9b472a0 jdk7-b36
 14f50aee4989b75934d385c56a83da0c23d2f68b jdk7-b37
+cc5f810b5af8a3a83b0df5a29d9e24d7a0ff8086 jdk7-b38
+4e51997582effa006dde5c6d8b8820b2045b9c7f jdk7-b39
+2201dad60231a3c3e0346e3a0250d69ca3b71fd4 jdk7-b40
+44941f893cea95ecdd5987b12e548069bd803849 jdk7-b41
+3ef0bdfa7609f79d4f2ea621f30cf593a2e432ce jdk7-b42
+50c67678b0d180063ade199d398b67a54063fa7f jdk7-b43
+d8eb2738db6b148911177d9bcfe888109b7f2f71 jdk7-b44
--- a/make/com/sun/java/pack/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/com/sun/java/pack/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -142,9 +142,11 @@
 $(UNPACK_EXE): $(UNPACK_EXE_FILES_o) winres 
 	$(prep-target)
 	$(LINKER)  $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
+ifdef MT
+	$(MT) /manifest $(TEMPDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1
+endif
 	$(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE)
 
-
 ifeq ($(PLATFORM), windows) 
 $(RES):: $(VERSIONINFO_RESOURCE)
 	$(prep-target)
--- a/make/common/Defs-windows.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/common/Defs-windows.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -68,11 +68,24 @@
 
 # The following DLL's are considered MS runtime libraries and should
 #     not to be REBASEd, see deploy/make/common/Release.gmk.
-#     msvcrt.dll, msvcr71.dll: Microsoft runtimes
+#     msvcrt.dll, msvcrnn.dll [msvcr71 or msvcr80 or msvcr90] : Microsoft runtimes
 MS_RUNTIME_LIBRARIES = msvcrt.dll
+MSVCRNN_DLL =
 ifeq ($(ARCH_DATA_MODEL), 32)
   ifeq ($(COMPILER_VERSION), VS2003)
-    MS_RUNTIME_LIBRARIES += msvcr71.dll
+    MSVCRNN_DLL = msvcr71.dll
+    MSVCPNN_DLL = msvcp71.dll
+    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
+  endif
+  ifeq ($(COMPILER_VERSION), VS2005)
+    MSVCRNN_DLL = msvcr80.dll
+    MSVCPNN_DLL = msvcp80.dll
+    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
+  endif
+  ifeq ($(COMPILER_VERSION), VS2008)
+    MSVCRNN_DLL = msvcr90.dll
+    MSVCPNN_DLL = msvcp90.dll
+    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
   endif
 endif
 
@@ -178,9 +191,22 @@
       CC_OPT/LOWER   = -O1
     endif
   endif
+  ifeq ($(COMPILER_VERSION), VS2008)
+    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+    AUTOMATIC_PCH_OPTION =
+    GX_OPTION = -EHsc
+    ifeq ($(ARCH_DATA_MODEL), 32)
+      CC_OPT/HIGHEST = -O2
+      CC_OPT/HIGHER  = -O1
+      CC_OPT/LOWER   = -O1
+    else
+      CC_OPT/HIGHEST = -O2
+      CC_OPT/HIGHER  = -O1
+      CC_OPT/LOWER   = -O1
+    endif
+  endif
 
 else # CC_VERSION
-  
   # GCC not supported, but left for historical reference...
   CC_OPT/NONE     =
   CC_OPT/LOWER    = -O2
@@ -200,10 +226,13 @@
 #   -MTd       Use static debug version (better than -MDd, no runtime issues)
 #   -D_DEBUG   Change use of malloc/free/etc to use special debug ones (-MTd)
 #
-#      NOTE: We also will use /D _STATIC_CPPLIB  so we don't need msvcp71.dll
+#      NOTE: We also will use /D _STATIC_CPPLIB  so we don't need msvcpnn.dll
 #
+# If MS_RUNTIME_STATIC is requested, use -MT only with VS2003.
 ifeq ($(MS_RUNTIME_STATIC),true)
-  MS_RUNTIME_OPTION=-MT
+  ifeq ($(COMPILER_VERSION), VS2003)
+    MS_RUNTIME_OPTION=-MT
+  endif
 else
   MS_RUNTIME_OPTION=-MD
 endif
@@ -238,7 +267,7 @@
   #   -YX -Fp/.../foobar.pch   Use precompiled headers (try someday?)
   #   -nologo  Don't print out startup message
   #   /D _STATIC_CPPLIB  
-  #            Use static link for the C++ runtime (so msvcp71.dll not needed)
+  #            Use static link for the C++ runtime (so msvcpnn.dll not needed)
   #   
   CFLAGS_COMMON  += -Zi -nologo
   CFLAGS_OPT      = $(CC_OPT)
@@ -277,8 +306,16 @@
   # Always add bufferoverflowU.lib to VS2005 link commands (pack uses LDDFLAGS)
   LFLAGS_VS2005 = $(BUFFEROVERFLOWLIB)
 
+  # VS2008 has bufferoverflow baked in:
+  LFLAGS_VS2008 = 
+
   # LFLAGS are the flags given to $(LINK) and used to build the actual DLL file
   BASELFLAGS = -nologo /opt:REF /incremental:no
+ifdef MT
+    # VS2005, VS2008, and beyond: ask LINK to generate manifests for .dll & .exe
+    BASELFLAGS += /manifest
+endif
+
   LFLAGS = $(BASELFLAGS) $(LDEBUG) $(EXTRA_LFLAGS) $(LFLAGS_$(COMPILER_VERSION))
   LDDFLAGS += $(LFLAGS_$(COMPILER_VERSION))
   
--- a/make/common/Library.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/common/Library.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -179,6 +179,9 @@
 # build it into $(OBJDIR) so that the other generated files get put 
 # there, then copy just the DLL (and MAP file) to the requested directory.
 #
+# In VS2005 or VS2008 the link command creates a .manifest file that we want
+# to insert into the linked artifact so we do not need to track it separately.
+# Use ";#2" for .dll and ";#1" for .exe in the MT command below:
 $(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lcf
 	@$(prep-target)
 	@$(MKDIR) -p $(OBJDIR)
@@ -186,6 +189,9 @@
 	  -map:$(OBJDIR)/$(LIBRARY).map \
 	  $(LFLAGS) @$(OBJDIR)/$(LIBRARY).lcf \
 	  $(OTHER_LCF) $(JAVALIB) $(LDLIBS)
+ifdef MT
+	$(MT) /manifest $(OBJDIR)/$(@F).manifest /outputresource:$(OBJDIR)/$(@F);#2
+endif
 	$(CP) $(OBJDIR)/$(@F) $@
 	$(CP) $(OBJDIR)/$(LIBRARY).map $(@D)
 	$(CP) $(OBJDIR)/$(LIBRARY).pdb $(@D)
--- a/make/common/Program.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/common/Program.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -153,6 +153,9 @@
   STACK_SIZE=1048576
 endif
 
+# In VS2005 or VS2008 the link command creates a .manifest file that we want
+# to insert into the linked artifact so we do not need to track it separately.
+# Use ";#2" for .dll and ";#1" for .exe in the MT command below:
 $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX):: $(OBJDIR)/$(PROGRAM).lcf $(FILES_o) $(JLI_LCF) 
 	@$(prep-target)
 	@set -- $?; \
@@ -160,6 +163,9 @@
 	$(LINK) -out:$@ /STACK:$(STACK_SIZE) \
 	    -map:$(OBJDIR)/$(PROGRAM).map $(LFLAGS) $(LDFLAGS) \
 	    @$(OBJDIR)/$(PROGRAM).lcf $(LDLIBS)
+ifdef MT
+	$(MT) /manifest $(OBJDIR)/$(PROGRAM).exe.manifest /outputresource:$@;#1
+endif
 
 else # PLATFORM
 
--- a/make/common/shared/Compiler-msvc.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/common/shared/Compiler-msvc.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -54,17 +54,10 @@
   ifeq ($(ARCH_DATA_MODEL), 32)
     LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
     CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
-    REQUIRED_CC_VER = 13.10.3077
-    REQUIRED_LINK_VER = 7.10.3077
-    ifeq ($(CC_MAJORVER), 12)
-      # This should be: CC_VER=12.00.8168 LINK_VER=6.00.8447
-      COMPILER_NAME=Visual C++ 6.0 Professional + VC6-SP 3
-      COMPILER_VERSION=VC6
-      REBASE     = $(COMPILER_PATH)rebase
-      MTL        = $(COMPILER_PATH)midl
-    endif
     ifeq ($(CC_MAJORVER), 13)
       # This should be: CC_VER=13.10.3077 LINK_VER=7.10.3077
+      REQUIRED_CC_VER = 13.10.3077
+      REQUIRED_LINK_VER = 7.10.3077
       COMPILER_NAME=Visual Studio .NET 2003 Professional C++
       COMPILER_VERSION=VS2003
       REBASE     = $(COMPILER_PATH)../../Common7/Tools/Bin/rebase
@@ -74,17 +67,34 @@
       endif
     endif
     ifeq ($(CC_MAJORVER), 14)
-      # This should be: CC_VER=14.00.0000 LINK_VER=8.00.0000
-      # NOTE: This compiler has not been tried yet on 32bit systems
-      COMPILER_NAME=Visual Studio .NET 2005
+      # This should be: CC_VER=14.00.50727.42 LINK_VER=8.00.50727.42
+      REQUIRED_CC_VER = 14.00.50727.42
+      REQUIRED_LINK_VER = 8.00.50727.42
+      COMPILER_NAME=Visual Studio 8
       COMPILER_VERSION=VS2005
       REBASE     = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase
       MTL        = $(COMPILER_PATH)../../Common8/Tools/Bin/midl
+      MT         = $(MSDEVTOOLS_PATH)mt
+      ifndef COMPILER_PATH
+	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
+      endif
+    endif
+    ifeq ($(CC_MAJORVER), 15)
+      # This should be: CC_VER=15.00.21022.08 LINK_VER=9.00.21022.08
+      REQUIRED_CC_VER = 15.00.21022.08
+      REQUIRED_LINK_VER = 9.00.21022.08
+      COMPILER_NAME=Visual Studio 9
+      COMPILER_VERSION=VS2008
+      #rebase and midl moved out of Visual Studio into the SDK:
+      REBASE     = $(MSDEVTOOLS_PATH)/rebase
+      MTL        = $(MSDEVTOOLS_PATH)/midl.exe
+      MT         = $(MSDEVTOOLS_PATH)mt
       ifndef COMPILER_PATH
 	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
       endif
     endif
   else
+    # else ARCH_DATA_MODEL is 64
     LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
     CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
     CC_MINORVER :=$(call MinorVersion,$(CC_VER))
--- a/make/common/shared/Defs-windows.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/common/shared/Defs-windows.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -74,7 +74,7 @@
 #   The ALT values should never really have spaces or use \.
 #   Suspect these environment variables to have spaces and/or \ characters:
 #     SYSTEMROOT, SystemRoot, WINDIR, windir, PROGRAMFILES, ProgramFiles,
-#     DXSDK_DIR, MSTOOLS, Mstools, MSSDK, MSSdk, VC71COMNTOOLS, 
+#     DXSDK_DIR, MSTOOLS, Mstools, MSSDK, MSSdk, VCnnCOMNTOOLS, 
 #     MSVCDIR, MSVCDir.
 #     So use $(subst \,/,) on them first adding quotes and placing them in
 #         their own variable assigned with :=, then use FullPath.
@@ -247,22 +247,36 @@
       endif
     endif
   endif
-  ifneq ($(subst MSDev98,OLDOLDOLD,$(_msvc_dir)),$(_msvc_dir))
-    _msvc_dir :=
-  endif
-  # If we still don't have it, look for VS71COMNTOOLS, setup by installer?
+  # If we still don't have it, look for VSnnCOMNTOOLS (newest first),
+  # set by installer?
   ifeq ($(_msvc_dir),)
+    ifdef VS90COMNTOOLS  # /Common/Tools directory, use ../../Vc
+      xVS90COMNTOOLS :="$(subst \,/,$(VS90COMNTOOLS))"
+      _vs90tools     :=$(call FullPath,$(xVS90COMNTOOLS))
+    endif
+    ifneq ($(_vs90tools),)
+      _msvc_dir :=$(_vs90tools)/../../Vc
+      _redist_sdk   :=$(_msvc_dir)/../SDK/v3.5/Bin
+    endif
+    ifdef VS80COMNTOOLS  # /Common/Tools directory, use ../../Vc
+      xVS80COMNTOOLS :="$(subst \,/,$(VS80COMNTOOLS))"
+      _vs80tools     :=$(call FullPath,$(xVS80COMNTOOLS))
+    endif
+    ifneq ($(_vs80tools),)
+      _msvc_dir :=$(_vs80tools)/../../Vc
+      _redist_sdk   :=$(_msvc_dir)/../SDK/v2.0/Bin
+    endif
     ifdef VS71COMNTOOLS  # /Common/Tools directory, use ../../Vc7
       xVS71COMNTOOLS :="$(subst \,/,$(VS71COMNTOOLS))"
       _vs71tools     :=$(call FullPath,$(xVS71COMNTOOLS))
     endif
     ifneq ($(_vs71tools),)
       _msvc_dir :=$(_vs71tools)/../../Vc7
+      _redist_sdk    :=$(_vs71tools)/../..
     endif
   endif
   ifneq ($(_msvc_dir),)
     _compiler_bin :=$(_msvc_dir)/Bin
-    _redist_sdk   :=$(_msvc_dir)/../SDK/v1.1/Bin
     _ms_sdk       :=$(_msvc_dir)/PlatformSDK
   endif
 endif
@@ -410,8 +424,8 @@
 	else \
 	  echo "false"; \
 	fi)
-_REDIST71_SDK_EXISTS := $(shell \
-	if [ -f "$(_redist_sdk)/msvcr71.dll" ]; then \
+_REDISTNN_SDK_EXISTS := $(shell \
+	if [ -f "$(_redist_sdk)/$(MSVCRNN_DLL)" ]; then \
 	  echo "true"; \
 	else \
 	  echo "false"; \
@@ -435,20 +449,20 @@
   MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
   MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
   
-  # MSVCR71_DLL_PATH: location of msvcr71.dll that will be re-distributed
-  ifdef ALT_MSVCR71_DLL_PATH
-    xALT_MSVCR71_DLL_PATH :="$(subst \,/,$(ALT_MSVCR71_DLL_PATH))"
-    MSVCR71_DLL_PATH      :=$(call FullPath,$(xALT_MSVCR71_DLL_PATH))
+  # MSVCRNN_DLL_PATH: location of msvcrnn.dll that will be re-distributed
+  ifdef ALT_MSVCRNN_DLL_PATH
+    xALT_MSVCRNN_DLL_PATH :="$(subst \,/,$(ALT_MSVCRNN_DLL_PATH))"
+    MSVCRNN_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRNN_DLL_PATH))
   else
-    ifeq ($(_REDIST71_SDK_EXISTS), true)
-      xREDIST71_DIR  :=$(_redist_sdk)
+    ifeq ($(_REDISTNN_SDK_EXISTS), true)
+      xREDISTNN_DIR  :=$(_redist_sdk)
     else
-      xREDIST71_DIR  :=$(_system_root)/system32
+      xREDISTNN_DIR  :=$(_system_root)/system32
     endif
-    MSVCR71_DLL_PATH :=$(call FullPath,$(xREDIST71_DIR))
+    MSVCRNN_DLL_PATH :=$(call FullPath,$(xREDISTNN_DIR))
   endif
-  MSVCR71_DLL_PATH :=$(call AltCheckSpaces,MSVCR71_DLL_PATH)
-  MSVCR71_DLL_PATH:=$(call AltCheckValue,MSVCR71_DLL_PATH)
+  MSVCRNN_DLL_PATH :=$(call AltCheckSpaces,MSVCRNN_DLL_PATH)
+  MSVCRNN_DLL_PATH:=$(call AltCheckValue,MSVCRNN_DLL_PATH)
   
 else
 
--- a/make/common/shared/Sanity-Settings.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/common/shared/Sanity-Settings.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -98,7 +98,7 @@
 ifeq ($(PLATFORM),windows)
   ALL_SETTINGS+=$(call addAltSetting,MSVCRT_DLL_PATH)
   ifeq ($(ARCH_DATA_MODEL), 32)
-    ALL_SETTINGS+=$(call addAltSetting,MSVCR71_DLL_PATH)
+    ALL_SETTINGS+=$(call addAltSetting,MSVCRNN_DLL_PATH)
   endif
   ALL_SETTINGS+=$(call addAltSetting,MSDEVTOOLS_PATH)
 endif
--- a/make/common/shared/Sanity.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/common/shared/Sanity.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -835,15 +835,13 @@
 	    "" >> $(ERROR_FILE) ; \
 	fi
   ifeq ($(ARCH_DATA_MODEL), 32)
-    ifeq ($(COMPILER_VERSION), VS2003)
-	@if [ ! -r "$(MSVCR71_DLL_PATH)/msvcr71.dll" ]; then \
-	  $(ECHO) "ERROR: You do not have access to msvcr71.dll. \n" \
+	@if [ ! -r "$(MSVCRNN_DLL_PATH)/$(MSVCRNN_DLL)" ]; then \
+	  $(ECHO) "ERROR: You do not have access to $(MSVCRNN_DLL). \n" \
 	    "      Please check your access to \n" \
-	    "          $(MSVCR71_DLL_PATH) \n" \
-	    "      and/or check your value of ALT_MSVCR71_DLL_PATH. \n" \
+	    "          $(MSVCRNN_DLL_PATH) \n" \
+	    "      and/or check your value of ALT_MSVCRNN_DLL_PATH. \n" \
 	    "" >> $(ERROR_FILE) ; \
 	fi
-    endif
   endif
 endif
 
@@ -1350,10 +1348,11 @@
 $(ALSA_VERSION_CHECK).c:
 	@$(prep-target)
 	@$(ECHO) "#include <alsa/asoundlib.h>\n" \
-                  "int main(char** argv, int argc) {\n" \
-                   "  printf(\"%s\", SND_LIB_VERSION_STR);\n" \
-                    "  return 0;\n" \
-                    "}\n" \
+		 "#include <stdio.h>\n" \
+		 "int main(int argc, char** argv) {\n" \
+		 "  printf(\"%s\", SND_LIB_VERSION_STR);\n" \
+		 "  return 0;\n" \
+		 "}\n" \
                     > $@
 endif
 
--- a/make/docs/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/docs/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -64,7 +64,7 @@
 		-bottom $(JAVADOCBOTTOM_SWITCH)		\
 		$(OVERVIEW_OPTION)
 
-DRAFT = '<br><b>DRAFT&nbsp;'$(MILESTONE)-$(BUILD_NUMBER)'</b>'
+DRAFT = '<br><strong>DRAFT&nbsp;'$(MILESTONE)-$(BUILD_NUMBER)'</strong>'
 THIS_YEAR := $(shell $(DATE) | $(SED) -e 's/  / /g' | $(CUT) -d' ' -f6)
 TRADEMARK = &\#x2122;
 
@@ -95,7 +95,7 @@
 
 JAVADOCTITLE  = 'Java$(TRADEMARK) Platform, Standard Edition $(JDK_MINOR_VERSION)<br>API Specification'
 JAVADOCWINDOWTITLE  = 'Java Platform SE $(JDK_MINOR_VERSION)'
-JAVADOCHEADER = '<b>Java$(TRADEMARK)&nbsp;Platform<br>Standard&nbsp;Ed.&nbsp;$(JDK_MINOR_VERSION)</b>'
+JAVADOCHEADER = '<strong>Java$(TRADEMARK)&nbsp;Platform<br>Standard&nbsp;Ed.&nbsp;$(JDK_MINOR_VERSION)</strong>'
 JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>For further API reference and developer documentation, see <a href="{@docroot}/../../webnotes/devdocs-vs-specs.html">Java SE Developer Documentation</a>. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples. <p>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to <a href="{@docroot}/../legal/license.html">license terms</a>. Also see the <a href="http://java.sun.com/docs/redist.html">documentation redistribution policy</a>.</font>'
 JAVADOCOVERVIEW = $(SHARE_SRC)/classes/overview-core.html
 
@@ -120,7 +120,7 @@
                     -group $(DOMAPI_GROUPNAME) $(DOMAPI_REGEXP)
 DOMAPI_JAVADOCTITLE  = 'Common DOM API'
 DOMAPI_JAVADOCWINDOWTITLE  = 'Common DOM API'
-DOMAPI_JAVADOCHEADER = '<b>Common DOM API</b>'
+DOMAPI_JAVADOCHEADER = '<strong>Common DOM API</strong>'
 DOMAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A.  All Rights Reserved.</font>'
 DOMAPI_GROUPNAME = "Packages"
 DOMAPI_REGEXP = "com.sun.java.browser.dom:org.w3c.dom*"
@@ -140,7 +140,7 @@
                     -overview $(MIRROR_OVERVIEW)
 MIRROR_JAVADOCTITLE = 'Mirror API'
 MIRROR_JAVADOCWINDOWTITLE = 'Mirror API'
-MIRROR_JAVADOCHEADER = '<b>Mirror API</b>'
+MIRROR_JAVADOCHEADER = '<strong>Mirror API</strong>'
 MIRROR_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Report a bug or request a feature.</a><br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.</font>'
 MIRROR_GROUPNAME = "Packages"
 MIRROR_OVERVIEW = $(IMPORTSRCDIR)/com/sun/mirror/overview.html
@@ -163,7 +163,7 @@
                     -group $(DOCLETAPI_GROUPNAME) $(DOCLETAPI_REGEXP)
 DOCLETAPI_JAVADOCTITLE  = 'Doclet API'
 DOCLETAPI_JAVADOCWINDOWTITLE  = 'Doclet API'
-DOCLETAPI_JAVADOCHEADER = '<b>Doclet API</b>'
+DOCLETAPI_JAVADOCHEADER = '<strong>Doclet API</strong>'
 DOCLETAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993-$(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A.  All Rights Reserved.</font>'
 DOCLETAPI_GROUPNAME = "Packages"
 DOCLETAPI_REGEXP = "com.sun.javadoc"
@@ -407,7 +407,7 @@
 #
 TREEAPI_JAVADOCTITLE = 'Compiler Tree API'
 TREEAPI_JAVADOCWINDOWTITLE = 'Compiler Tree API'
-TREEAPI_JAVADOCHEADER = '<b>Compiler Tree API</b>'
+TREEAPI_JAVADOCHEADER = '<strong>Compiler Tree API</strong>'
 TREEAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Report a bug or request a feature.</a><br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.</font>'
 TREEAPI_GROUPNAME = "Packages"
 TREEAPI_OVERVIEW = $(SHARE_SRC)/classes/com/sun/source/overview.html
--- a/make/java/main/java/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/java/main/java/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -28,11 +28,10 @@
 PRODUCT = java
 
 #
-# Statically link java to avoid the dependency on msvcr71.dll.  This
+# Statically link java to avoid the dependency on msvcrNN.dll.  This
 # must be set before Defs.gmk is included.
 #
 MS_RUNTIME_STATIC = true
-
 #
 # Statically link java to avoid the dependency on jli.dll.  This
 # must be set before Program.gmk is included.
@@ -44,6 +43,7 @@
 # Override the default version info with our own resource file (see 5106536)
 ifeq ($(PLATFORM), windows)
 LDLIBS_COMMON += user32.lib comctl32.lib
+
 ifdef OPENJDK
     RC_FLAGS += -i "$(PLATFORM_SRC)/resource/icons"
 else
--- a/make/java/main/javaw/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/java/main/javaw/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -32,11 +32,10 @@
 PRODUCT = java
 
 #
-# Statically link javaw to avoid the dependency on msvcr71.dll.  This
+# Statically link javaw to avoid the dependency on msvcrNN.dll.  This
 # must be set before Defs.gmk is included.
 #
 MS_RUNTIME_STATIC = true
-
 #
 # Statically link javaw to avoid the dependency on jli.dll.  This
 # must be set before Program.gmk is included.
--- a/make/java/nio/FILES_java.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/java/nio/FILES_java.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -113,8 +113,7 @@
 	sun/nio/cs/FastCharsetProvider.java \
 	sun/nio/cs/HistoricallyNamedCharset.java \
 	sun/nio/cs/ISO_8859_1.java \
-	sun/nio/cs/ISO_8859_15.java \
-	sun/nio/cs/MS1252.java \
+	sun/nio/cs/SingleByte.java \
 	sun/nio/cs/SingleByteDecoder.java \
 	sun/nio/cs/SingleByteEncoder.java \
 	sun/nio/cs/StreamEncoder.java \
@@ -268,6 +267,34 @@
 	java/nio/charset/IllegalCharsetNameException.java \
 	java/nio/charset/UnsupportedCharsetException.java
 
+FILES_gen_sbcs = \
+	sun/nio/cs/ISO_8859_2.java \
+	sun/nio/cs/ISO_8859_4.java \
+	sun/nio/cs/ISO_8859_5.java \
+	sun/nio/cs/ISO_8859_7.java \
+	sun/nio/cs/ISO_8859_9.java \
+	sun/nio/cs/ISO_8859_13.java \
+	sun/nio/cs/ISO_8859_15.java \
+	sun/nio/cs/IBM437.java \
+	sun/nio/cs/IBM737.java \
+	sun/nio/cs/IBM775.java \
+	sun/nio/cs/IBM850.java \
+	sun/nio/cs/IBM852.java \
+	sun/nio/cs/IBM855.java \
+	sun/nio/cs/IBM857.java \
+	sun/nio/cs/IBM858.java \
+	sun/nio/cs/IBM862.java \
+	sun/nio/cs/IBM866.java \
+	sun/nio/cs/IBM874.java \
+	sun/nio/cs/KOI8_R.java \
+	sun/nio/cs/KOI8_U.java \
+	sun/nio/cs/MS1250.java \
+	sun/nio/cs/MS1251.java \
+	sun/nio/cs/MS1252.java \
+	sun/nio/cs/MS1253.java \
+	sun/nio/cs/MS1254.java \
+	sun/nio/cs/MS1257.java
+
 FILES_gen_csp = sun/nio/cs/StandardCharsets.java
 
 FILES_gen_sor = sun/nio/ch/SocketOptionRegistry.java
@@ -275,4 +302,4 @@
 FILES_gen = $(FILES_gen_coder) $(FILES_gen_buffer) $(FILES_gen_ex) \
     $(FILES_gen_csp) $(FILES_gen_sor)
 
-FILES_java = $(FILES_src) $(FILES_gen)
+FILES_java = $(FILES_src) $(FILES_gen) $(FILES_gen_sbcs)
--- a/make/java/nio/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/java/nio/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -182,7 +182,9 @@
 SCH_GEN=$(SNIO_GEN)/ch
 SCS_GEN=$(SNIO_GEN)/cs
 
-sources: $(SPP_JARFILE) $(FILES_genout)
+FILES_gensbcs_out = $(FILES_gen_sbcs:%.java=$(GENSRCDIR)/%.java)
+
+sources: $(SPP_JARFILE) $(FILES_genout) $(FILES_gensbcs_out)
 
 #
 # Generated buffer classes
@@ -657,4 +659,15 @@
 	NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh $(SOR_COPYRIGHT_YEARS) > $@
 	$(GENSOR_EXE) >> $@
 
+#
+# Generated sun.nio.cs SingleByte classes
+#
+GENCSSRC = $(BUILDDIR)/tools/CharsetMapping
+CHARSETMAPPING_JARFILE = $(BUILDTOOLJARDIR)/charsetmapping.jar
+
+$(FILES_gensbcs_out): $(GENCSSRC)/SingleByte-X.java $(GENCSSRC)/sbcs
+	@$(prep-target)
+	$(BOOT_JAVA_CMD) -cp $(CHARSETMAPPING_JARFILE) build.tools.charsetmapping.GenerateSBCS \
+		$(GENCSSRC) $(SCS_GEN) sbcs
+
 .PHONY: sources 
--- a/make/java/redist/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/java/redist/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -109,7 +109,7 @@
 $(BINDIR)/msvcrt.dll: $(MSVCRT_DLL_PATH)/msvcrt.dll
 	$(install-import-file)
 	$(CHMOD) a+x $@
-$(BINDIR)/msvcr71.dll: $(MSVCR71_DLL_PATH)/msvcr71.dll
+$(BINDIR)/$(MSVCRNN_DLL): $(MSVCRNN_DLL_PATH)/$(MSVCRNN_DLL)
 	$(install-import-file)
 	$(CHMOD) a+x $@
 
--- a/make/javax/swing/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/javax/swing/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/make/netbeans/jmx/build.xml	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/netbeans/jmx/build.xml	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 <!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
 
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
@@ -44,13 +44,13 @@
         <!-- because they depend on the values of BUILD_DATE and BUILD_DATE_SIMPLE  -->
         <!-- At this time, ./build.properties has not been loaded yet. -->
         <property name="project.build.name" value="openjdk-bXX"/>
-	<property name="project.build.fulltag" 
+	<property name="project.build.fulltag"
                   value="${ant.project.name}-${project.build.name}-${BUILD_DATE}" />
 
         <!-- unchecked warnings will be fixed in JMX 2.0 as part of the work
              being done on JSR 255 new features                              -->
-        <property name="javac.options" 
-                  value="-Xlint -Xlint:-unchecked -Xlint:-deprecation"/>
+        <property name="javac.options"
+                  value="-Xlint -Xlint:-deprecation"/>
     </target>
 
 
@@ -58,13 +58,13 @@
 	<!-- Dir to keep generated stub source -->
         <mkdir dir="${gensrc.dir}" />
     </target>
-    
+
 
     <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~ -->
     <!-- Call rmic-jmx subtargets -->
 
     <target name="-rmic-jmx" depends="-init,-rmic-jmx-jrmp,-rmic-jmx-iiop"
-	    description="Calls -init,-rmic-jmx-jrmp,-rmic-jmx-iiop" 
+	    description="Calls -init,-rmic-jmx-jrmp,-rmic-jmx-iiop"
     />
 
 
@@ -96,7 +96,7 @@
 
     <target name="-rmic-jmx-iiop" depends="-init,-check-jmx-iiop-uptodate" unless="jmx-iiop-uptodate"
             description="Generate RMI IIOP stub class files for remote objects. Do not keep generated java files." >
- 
+
 	<rmic 	base="${classes.dir}"
 		includeAntRuntime="no"
 		includeJavaRuntime="no"
@@ -115,11 +115,11 @@
 
     <target name="-check-jmx-iiop-uptodate" depends="-init">
 
-	<uptodate property="jmx-iiop-uptodate" 
+	<uptodate property="jmx-iiop-uptodate"
 		   srcfile="${classes.dir}/javax/management/remote/rmi/RMIConnectionImpl.class"
 		targetfile="${classes.dir}/org/omg/stub/javax/management/remote/rmi/_RMIConnectionImpl_Tie.class"
 	/>
-	<uptodate property="jmx-iiop-uptodate" 
+	<uptodate property="jmx-iiop-uptodate"
 		   srcfile="${classes.dir}/javax/management/remote/rmi/RMIServerImpl.class"
 		targetfile="${classes.dir}/org/omg/stub/javax/management/remote/rmi/_RMIServerImpl_Tie.class"
 	/>
@@ -131,7 +131,7 @@
     <target name="-post-compile" depends="-init,-rmic-jmx"
             description="Jar JMX class files (including RMI stubs)" >
        <mkdir dir="${dist.dir}/lib"/>
-       <jar jarfile="${dist.dir}/lib/${jar.jmx.name}" 
+       <jar jarfile="${dist.dir}/lib/${jar.jmx.name}"
 	    update="true"
 	    index="false"
 	    duplicate="fail">
@@ -144,7 +144,7 @@
 		    <attribute name="Specification-Version"  value="${jar.jmx.spec.version}" />
 		    <attribute name="Specification-Vendor"   value="${jar.jmx.spec.vendor}" />
 		    <attribute name="Implementation-Title"   value="${jar.jmx.impl.title}" />
-		    <attribute name="Implementation-Version" value="${project.build.fulltag}" /> 
+		    <attribute name="Implementation-Version" value="${project.build.fulltag}" />
 		    <attribute name="Implementation-Vendor"  value="${jar.jmx.impl.vendor}" />
 		</section>
 	    </manifest>
--- a/make/sun/net/spi/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/sun/net/spi/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 2000-2005 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/make/sun/net/spi/nameservice/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/sun/net/spi/nameservice/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 2000-2005 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/make/sun/nio/FILES_java.gmk	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/sun/nio/FILES_java.gmk	Thu Jan 29 18:33:52 2009 -0800
@@ -29,7 +29,7 @@
 # Core character converters are built from make/java/java.
 #
 
-FILES_java = \
+FILES_src = \
 	sun/io/ByteToCharDoubleByte.java \
 	sun/io/ByteToCharDBCS_ASCII.java \
 	sun/io/ByteToCharDBCS_EBCDIC.java \
@@ -303,3 +303,77 @@
 	sun/io/CharToByteMacTurkish.java \
 	sun/io/CharToByteMacUkraine.java \
 	sun/io/CharToByteTIS620.java
+
+FILES_gen_extsbcs = \
+	sun/nio/cs/ext/IBM037.java \
+	sun/nio/cs/ext/IBM1006.java \
+	sun/nio/cs/ext/IBM1025.java \
+	sun/nio/cs/ext/IBM1026.java \
+	sun/nio/cs/ext/IBM1046.java \
+	sun/nio/cs/ext/IBM1047.java \
+	sun/nio/cs/ext/IBM1097.java \
+	sun/nio/cs/ext/IBM1098.java \
+	sun/nio/cs/ext/IBM1112.java \
+	sun/nio/cs/ext/IBM1122.java \
+	sun/nio/cs/ext/IBM1123.java \
+	sun/nio/cs/ext/IBM1124.java \
+	sun/nio/cs/ext/IBM1140.java \
+	sun/nio/cs/ext/IBM1141.java \
+	sun/nio/cs/ext/IBM1142.java \
+	sun/nio/cs/ext/IBM1143.java \
+	sun/nio/cs/ext/IBM1144.java \
+	sun/nio/cs/ext/IBM1145.java \
+	sun/nio/cs/ext/IBM1146.java \
+	sun/nio/cs/ext/IBM1147.java \
+	sun/nio/cs/ext/IBM1148.java \
+	sun/nio/cs/ext/IBM1149.java \
+	sun/nio/cs/ext/IBM273.java \
+	sun/nio/cs/ext/IBM277.java \
+	sun/nio/cs/ext/IBM278.java \
+	sun/nio/cs/ext/IBM280.java \
+	sun/nio/cs/ext/IBM284.java \
+	sun/nio/cs/ext/IBM285.java \
+	sun/nio/cs/ext/IBM297.java \
+	sun/nio/cs/ext/IBM420.java \
+	sun/nio/cs/ext/IBM424.java \
+	sun/nio/cs/ext/IBM500.java \
+	sun/nio/cs/ext/IBM838.java \
+	sun/nio/cs/ext/IBM856.java \
+	sun/nio/cs/ext/IBM860.java \
+	sun/nio/cs/ext/IBM861.java \
+	sun/nio/cs/ext/IBM863.java \
+	sun/nio/cs/ext/IBM864.java \
+	sun/nio/cs/ext/IBM865.java \
+	sun/nio/cs/ext/IBM868.java \
+	sun/nio/cs/ext/IBM869.java \
+	sun/nio/cs/ext/IBM870.java \
+	sun/nio/cs/ext/IBM871.java \
+	sun/nio/cs/ext/IBM875.java \
+	sun/nio/cs/ext/IBM918.java \
+	sun/nio/cs/ext/IBM921.java \
+	sun/nio/cs/ext/IBM922.java \
+	sun/nio/cs/ext/ISO_8859_11.java \
+	sun/nio/cs/ext/ISO_8859_3.java \
+	sun/nio/cs/ext/ISO_8859_6.java \
+	sun/nio/cs/ext/ISO_8859_8.java \
+	sun/nio/cs/ext/MS1255.java \
+	sun/nio/cs/ext/MS1256.java \
+	sun/nio/cs/ext/MS1258.java \
+	sun/nio/cs/ext/MS874.java \
+	sun/nio/cs/ext/MacArabic.java \
+	sun/nio/cs/ext/MacCentralEurope.java \
+	sun/nio/cs/ext/MacCroatian.java \
+	sun/nio/cs/ext/MacCyrillic.java \
+	sun/nio/cs/ext/MacDingbat.java \
+	sun/nio/cs/ext/MacGreek.java \
+	sun/nio/cs/ext/MacHebrew.java \
+	sun/nio/cs/ext/MacIceland.java \
+	sun/nio/cs/ext/MacRoman.java \
+	sun/nio/cs/ext/MacRomania.java \
+	sun/nio/cs/ext/MacSymbol.java \
+	sun/nio/cs/ext/MacThai.java \
+	sun/nio/cs/ext/MacTurkish.java \
+	sun/nio/cs/ext/MacUkraine.java \
+	sun/nio/cs/ext/TIS_620.java
+
+FILES_java = $(FILES_src) $(FILES_gen_extsbcs)
\ No newline at end of file
--- a/make/sun/nio/Makefile	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/sun/nio/Makefile	Thu Jan 29 18:33:52 2009 -0800
@@ -60,12 +60,15 @@
 # this define is for the rule:
 CHARSETS_JAR = $(LIBDIR)/charsets.jar
 
+# extsbcs
+FILES_genout_extsbcs = $(FILES_gen_extsbcs:%.java=$(GENSRCDIR)/%.java)
+
 #
 # Rules
 #
 include $(BUILDDIR)/common/Classes.gmk
 
-build: $(CHARSETS_JAR)
+build: $(FILES_genout_extsbcs) $(CHARSETS_JAR)
 
 #
 # Extra rules to build character converters.
@@ -74,6 +77,8 @@
 SERVICE_DESCRIPTION_PATH = META-INF/services/$(SERVICE_DESCRIPTION)
 
 GENCSDATASRC = $(BUILDDIR)/tools/CharsetMapping
+GENCSEXT = $(GENSRCDIR)/sun/nio/cs/ext
+
 FILES_MAP = $(GENCSDATASRC)/sjis0213.map
 FILES_DAT = $(CLASSDESTDIR)/sun/nio/cs/ext/sjis0213.dat
 CHARSETMAPPING_JARFILE = $(BUILDTOOLJARDIR)/charsetmapping.jar
@@ -83,6 +88,15 @@
 	$(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) \
 		$(FILES_MAP) $(FILES_DAT)
 
+
+$(FILES_genout_extsbcs): $(GENCSDATASRC)/SingleByte-X.java $(GENCSDATASRC)/extsbcs
+	@$(prep-target)
+	$(RM) -r $(GENCSEXT)
+	$(MKDIR) -p $(GENCSEXT)
+	$(BOOT_JAVA_CMD) -cp $(CHARSETMAPPING_JARFILE) build.tools.charsetmapping.GenerateSBCS \
+		$(GENCSDATASRC) $(GENCSEXT) extsbcs
+
+
 $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \
   $(SHARE_SRC)/classes/sun/nio/cs/ext/$(SERVICE_DESCRIPTION_PATH)
 	$(install-file)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM037.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM037.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM037.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00a2
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+0021
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+005e
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+005b
+0xbb	U+005d
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM037.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1006.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1006.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+06f0
+0xa2	U+06f1
+0xa3	U+06f2
+0xa4	U+06f3
+0xa5	U+06f4
+0xa6	U+06f5
+0xa7	U+06f6
+0xa8	U+06f7
+0xa9	U+06f8
+0xaa	U+06f9
+0xab	U+060c
+0xac	U+061b
+0xad	U+00ad
+0xae	U+061f
+0xaf	U+fe81
+0xb0	U+fe8d
+0xb1	U+fe8e
+0xb2	U+f8fb
+0xb3	U+fe8f
+0xb4	U+fe91
+0xb5	U+fb56
+0xb6	U+fb58
+0xb7	U+fe93
+0xb8	U+fe95
+0xb9	U+fe97
+0xba	U+fb66
+0xbb	U+fb68
+0xbc	U+fe99
+0xbd	U+fe9b
+0xbe	U+fe9d
+0xbf	U+fe9f
+0xc0	U+fb7a
+0xc1	U+fb7c
+0xc2	U+fea1
+0xc3	U+fea3
+0xc4	U+fea5
+0xc5	U+fea7
+0xc6	U+fea9
+0xc7	U+fb88
+0xc8	U+feab
+0xc9	U+fead
+0xca	U+fb8c
+0xcb	U+feaf
+0xcc	U+fb8a
+0xcd	U+feb1
+0xce	U+feb3
+0xcf	U+feb5
+0xd0	U+feb7
+0xd1	U+feb9
+0xd2	U+febb
+0xd3	U+febd
+0xd4	U+febf
+0xd5	U+fec3
+0xd6	U+fec7
+0xd7	U+fec9
+0xd8	U+feca
+0xd9	U+fecb
+0xda	U+fecc
+0xdb	U+fecd
+0xdc	U+fece
+0xdd	U+fecf
+0xde	U+fed0
+0xdf	U+fed1
+0xe0	U+fed3
+0xe1	U+fed5
+0xe2	U+fed7
+0xe3	U+fb8e
+0xe4	U+fedb
+0xe5	U+fb92
+0xe6	U+fb94
+0xe7	U+fedd
+0xe8	U+fedf
+0xe9	U+fee0
+0xea	U+fee1
+0xeb	U+fee3
+0xec	U+fb9e
+0xed	U+fee5
+0xee	U+fee7
+0xef	U+fe85
+0xf0	U+feed
+0xf1	U+fba6
+0xf2	U+fba8
+0xf3	U+fba9
+0xf4	U+fbaa
+0xf5	U+fe80
+0xf6	U+fe89
+0xf7	U+fe8a
+0xf8	U+fe8b
+0xf9	U+fbfc
+0xfa	U+fbfd
+0xfb	U+fbfe
+0xfc	U+fbb0
+0xfd	U+fbae
+0xfe	U+fe7c
+0xff	U+fe7d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1025.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1025.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1025.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+0452
+0x43	U+0453
+0x44	U+0451
+0x45	U+0454
+0x46	U+0455
+0x47	U+0456
+0x48	U+0457
+0x49	U+0458
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+0459
+0x52	U+045a
+0x53	U+045b
+0x54	U+045c
+0x55	U+045e
+0x56	U+045f
+0x57	U+042a
+0x58	U+2116
+0x59	U+0402
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+0403
+0x63	U+0401
+0x64	U+0404
+0x65	U+0405
+0x66	U+0406
+0x67	U+0407
+0x68	U+0408
+0x69	U+0409
+0x6a	U+007c
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+040a
+0x71	U+040b
+0x72	U+040c
+0x73	U+00ad
+0x74	U+040e
+0x75	U+040f
+0x76	U+044e
+0x77	U+0430
+0x78	U+0431
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+0446
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+0434
+0x8b	U+0435
+0x8c	U+0444
+0x8d	U+0433
+0x8e	U+0445
+0x8f	U+0438
+0x90	U+0439
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+043a
+0x9b	U+043b
+0x9c	U+043c
+0x9d	U+043d
+0x9e	U+043e
+0x9f	U+043f
+0xa0	U+044f
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+0440
+0xab	U+0441
+0xac	U+0442
+0xad	U+0443
+0xae	U+0436
+0xaf	U+0432
+0xb0	U+044c
+0xb1	U+044b
+0xb2	U+0437
+0xb3	U+0448
+0xb4	U+044d
+0xb5	U+0449
+0xb6	U+0447
+0xb7	U+044a
+0xb8	U+042e
+0xb9	U+0410
+0xba	U+0411
+0xbb	U+0426
+0xbc	U+0414
+0xbd	U+0415
+0xbe	U+0424
+0xbf	U+0413
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+0425
+0xcb	U+0418
+0xcc	U+0419
+0xcd	U+041a
+0xce	U+041b
+0xcf	U+041c
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+041d
+0xdb	U+041e
+0xdc	U+041f
+0xdd	U+042f
+0xde	U+0420
+0xdf	U+0421
+0xe0	U+005c
+0xe1	U+00a7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+0422
+0xeb	U+0423
+0xec	U+0416
+0xed	U+0412
+0xee	U+042c
+0xef	U+042b
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+0417
+0xfb	U+0428
+0xfc	U+042d
+0xfd	U+0429
+0xfe	U+0427
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1025.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1026.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1026.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1026.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+007b
+0x49	U+00f1
+0x4a	U+00c7
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+011e
+0x5b	U+0130
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+005b
+0x69	U+00d1
+0x6a	U+015f
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0131
+0x7a	U+003a
+0x7b	U+00d6
+0x7c	U+015e
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+00dc
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+007d
+0x8d	U+0060
+0x8e	U+00a6
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+00f6
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+005d
+0xad	U+0024
+0xae	U+0040
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e7
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+007e
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+011f
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+005c
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00fc
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+0023
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+0022
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1026.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1046.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1046.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+fe88
+0x81	U+00d7
+0x82	U+00f7
+0x83	U+f8f6
+0x84	U+f8f5
+0x85	U+f8f4
+0x86	U+f8f7
+0x87	U+fe71
+0x88	U+0088
+0x89	U+25a0
+0x8a	U+2502
+0x8b	U+2500
+0x8c	U+2510
+0x8d	U+250c
+0x8e	U+2514
+0x8f	U+2518
+0x90	U+fe79
+0x91	U+fe7b
+0x92	U+fe7d
+0x93	U+fe7f
+0x94	U+fe77
+0x95	U+fe8a
+0x96	U+fef0
+0x97	U+fef3
+0x98	U+fef2
+0x99	U+fece
+0x9a	U+fecf
+0x9b	U+fed0
+0x9c	U+fef6
+0x9d	U+fef8
+0x9e	U+fefa
+0x9f	U+fefc
+0xa0	U+00a0
+0xa1	U+f8fa
+0xa2	U+f8f9
+0xa3	U+f8f8
+0xa4	U+00a4
+0xa5	U+f8fb
+0xa6	U+fe8b
+0xa7	U+fe91
+0xa8	U+fe97
+0xa9	U+fe9b
+0xaa	U+fe9f
+0xab	U+fea3
+0xac	U+060c
+0xad	U+00ad
+0xae	U+fea7
+0xaf	U+feb3
+0xb0	U+0660
+0xb1	U+0661
+0xb2	U+0662
+0xb3	U+0663
+0xb4	U+0664
+0xb5	U+0665
+0xb6	U+0666
+0xb7	U+0667
+0xb8	U+0668
+0xb9	U+0669
+0xba	U+feb7
+0xbb	U+061b
+0xbc	U+febb
+0xbd	U+febf
+0xbe	U+feca
+0xbf	U+061f
+0xc0	U+fecb
+0xc1	U+fe80
+0xc2	U+fe81
+0xc3	U+fe83
+0xc4	U+fe85
+0xc5	U+fe87
+0xc6	U+fe89
+0xc7	U+fe8d
+0xc8	U+fe8f
+0xc9	U+fe93
+0xca	U+fe95
+0xcb	U+fe99
+0xcc	U+fe9d
+0xcd	U+fea1
+0xce	U+fea5
+0xcf	U+fea9
+0xd0	U+feab
+0xd1	U+fead
+0xd2	U+feaf
+0xd3	U+feb1
+0xd4	U+feb5
+0xd5	U+feb9
+0xd6	U+febd
+0xd7	U+fec3
+0xd8	U+fec7
+0xd9	U+fec9
+0xda	U+fecd
+0xdb	U+fecc
+0xdc	U+fe82
+0xdd	U+fe84
+0xde	U+fe8e
+0xdf	U+fed3
+0xe0	U+0640
+0xe1	U+fed1
+0xe2	U+fed5
+0xe3	U+fed9
+0xe4	U+fedd
+0xe5	U+fee1
+0xe6	U+fee5
+0xe7	U+feeb
+0xe8	U+feed
+0xe9	U+feef
+0xea	U+fef1
+0xeb	U+fe70
+0xec	U+fe72
+0xed	U+fe74
+0xee	U+fe76
+0xef	U+fe78
+0xf0	U+fe7a
+0xf1	U+fe7c
+0xf2	U+fe7e
+0xf3	U+fed7
+0xf4	U+fedb
+0xf5	U+fedf
+0xf6	U+f8fc
+0xf7	U+fef5
+0xf8	U+fef7
+0xf9	U+fef9
+0xfa	U+fefb
+0xfb	U+fee3
+0xfc	U+fee7
+0xfd	U+feec
+0xfe	U+fee9
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1047.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1047.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+0085
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00a2
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+0021
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+005b
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00ac
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00dd
+0xbb	U+00a8
+0xbc	U+00af
+0xbd	U+005d
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1097.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1097.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+0085
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+060c
+0x43	U+064b
+0x44	U+fe81
+0x45	U+fe82
+0x46	U+f8fa
+0x47	U+fe8d
+0x48	U+fe8e
+0x49	U+f8fb
+0x4a	U+00a4
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+fe80
+0x52	U+fe83
+0x53	U+fe84
+0x54	U+f8f9
+0x55	U+fe85
+0x56	U+fe8b
+0x57	U+fe8f
+0x58	U+fe91
+0x59	U+fb56
+0x5a	U+0021
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+fb58
+0x63	U+fe95
+0x64	U+fe97
+0x65	U+fe99
+0x66	U+fe9b
+0x67	U+fe9d
+0x68	U+fe9f
+0x69	U+fb7a
+0x6a	U+061b
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+fb7c
+0x71	U+fea1
+0x72	U+fea3
+0x73	U+fea5
+0x74	U+fea7
+0x75	U+fea9
+0x76	U+feab
+0x77	U+fead
+0x78	U+feaf
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+fb8a
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+feb1
+0x8d	U+feb3
+0x8e	U+feb5
+0x8f	U+feb7
+0x90	U+feb9
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+febb
+0x9b	U+febd
+0x9c	U+febf
+0x9d	U+fec1
+0x9e	U+fec3
+0x9f	U+fec5
+0xa0	U+fec7
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+fec9
+0xab	U+feca
+0xac	U+fecb
+0xad	U+fecc
+0xae	U+fecd
+0xaf	U+fece
+0xb0	U+fecf
+0xb1	U+fed0
+0xb2	U+fed1
+0xb3	U+fed3
+0xb4	U+fed5
+0xb5	U+fed7
+0xb6	U+fb8e
+0xb7	U+fedb
+0xb8	U+fb92
+0xb9	U+fb94
+0xba	U+005b
+0xbb	U+005d
+0xbc	U+fedd
+0xbd	U+fedf
+0xbe	U+fee1
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+fee3
+0xcc	U+fee5
+0xcd	U+fee7
+0xce	U+feed
+0xcf	U+fee9
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+feeb
+0xdb	U+feec
+0xdc	U+fba4
+0xdd	U+fbfc
+0xde	U+fbfd
+0xdf	U+fbfe
+0xe0	U+005c
+0xe1	U+061f
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+0640
+0xeb	U+06f0
+0xec	U+06f1
+0xed	U+06f2
+0xee	U+06f3
+0xef	U+06f4
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+06f5
+0xfb	U+06f6
+0xfc	U+06f7
+0xfd	U+06f8
+0xfe	U+06f9
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1098.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1098.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+fffd
+0x81	U+fffd
+0x82	U+060c
+0x83	U+061b
+0x84	U+061f
+0x85	U+064b
+0x86	U+fe81
+0x87	U+fe82
+0x88	U+f8fa
+0x89	U+fe8d
+0x8a	U+fe8e
+0x8b	U+f8fb
+0x8c	U+fe80
+0x8d	U+fe83
+0x8e	U+fe84
+0x8f	U+f8f9
+0x90	U+fe85
+0x91	U+fe8b
+0x92	U+fe8f
+0x93	U+fe91
+0x94	U+fb56
+0x95	U+fb58
+0x96	U+fe95
+0x97	U+fe97
+0x98	U+fe99
+0x99	U+fe9b
+0x9a	U+fe9d
+0x9b	U+fe9f
+0x9c	U+fb7a
+0x9d	U+fb7c
+0x9e	U+00d7
+0x9f	U+fea1
+0xa0	U+fea3
+0xa1	U+fea5
+0xa2	U+fea7
+0xa3	U+fea9
+0xa4	U+feab
+0xa5	U+fead
+0xa6	U+feaf
+0xa7	U+fb8a
+0xa8	U+feb1
+0xa9	U+feb3
+0xaa	U+feb5
+0xab	U+feb7
+0xac	U+feb9
+0xad	U+febb
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+febd
+0xb6	U+febf
+0xb7	U+fec1
+0xb8	U+fec3
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+00a4
+0xbe	U+fec5
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+fec7
+0xc7	U+fec9
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+fffd
+0xd0	U+feca
+0xd1	U+fecb
+0xd2	U+fecc
+0xd3	U+fecd
+0xd4	U+fece
+0xd5	U+fecf
+0xd6	U+fed0
+0xd7	U+fed1
+0xd8	U+fed3
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+fed5
+0xde	U+fed7
+0xdf	U+2580
+0xe0	U+fb8e
+0xe1	U+fedb
+0xe2	U+fb92
+0xe3	U+fb94
+0xe4	U+fedd
+0xe5	U+fedf
+0xe6	U+fee1
+0xe7	U+fee3
+0xe8	U+fee5
+0xe9	U+fee7
+0xea	U+feed
+0xeb	U+fee9
+0xec	U+feeb
+0xed	U+feec
+0xee	U+fba4
+0xef	U+fbfc
+0xf0	U+00ad
+0xf1	U+fbfd
+0xf2	U+fbfe
+0xf3	U+0640
+0xf4	U+06f0
+0xf5	U+06f1
+0xf6	U+06f2
+0xf7	U+06f3
+0xf8	U+06f4
+0xf9	U+06f5
+0xfa	U+06f6
+0xfb	U+06f7
+0xfc	U+06f8
+0xfd	U+06f9
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1112.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1112.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1112.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+0161
+0x43	U+00e4
+0x44	U+0105
+0x45	U+012f
+0x46	U+016b
+0x47	U+00e5
+0x48	U+0113
+0x49	U+017e
+0x4a	U+00a2
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+00e9
+0x52	U+0119
+0x53	U+0117
+0x54	U+010d
+0x55	U+0173
+0x56	U+201e
+0x57	U+201c
+0x58	U+0123
+0x59	U+00df
+0x5a	U+0021
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+0160
+0x63	U+00c4
+0x64	U+0104
+0x65	U+012e
+0x66	U+016a
+0x67	U+00c5
+0x68	U+0112
+0x69	U+017d
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+0118
+0x73	U+0116
+0x74	U+010c
+0x75	U+0172
+0x76	U+012a
+0x77	U+013b
+0x78	U+0122
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+0101
+0x8d	U+017c
+0x8e	U+0144
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+0156
+0x9b	U+0157
+0x9c	U+00e6
+0x9d	U+0137
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+201d
+0xab	U+017a
+0xac	U+0100
+0xad	U+017b
+0xae	U+0143
+0xaf	U+00ae
+0xb0	U+005e
+0xb1	U+00a3
+0xb2	U+012b
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+005b
+0xbb	U+005d
+0xbc	U+0179
+0xbd	U+0136
+0xbe	U+013c
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+014d
+0xcc	U+00f6
+0xcd	U+0146
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+0107
+0xdc	U+00fc
+0xdd	U+0142
+0xde	U+015b
+0xdf	U+2019
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+014c
+0xec	U+00d6
+0xed	U+0145
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+0106
+0xfc	U+00dc
+0xfd	U+0141
+0xfe	U+015a
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1112.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1122.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1122.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1122.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+007b
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+007d
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00a7
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+0060
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+00a4
+0x5b	U+00c5
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+0023
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+0024
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+005c
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00e9
+0x7a	U+003a
+0x7b	U+00c4
+0x7c	U+00d6
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+0161
+0x8d	U+00fd
+0x8e	U+017e
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+005d
+0xa0	U+00b5
+0xa1	U+00fc
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+0160
+0xad	U+00dd
+0xae	U+017d
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+005b
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+203e
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e4
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00a6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e5
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+007e
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00c9
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+0040
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1122.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1123.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1123.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1123.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+0452
+0x43	U+0491
+0x44	U+0451
+0x45	U+0454
+0x46	U+0455
+0x47	U+0456
+0x48	U+0457
+0x49	U+0458
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+0459
+0x52	U+045a
+0x53	U+045b
+0x54	U+045c
+0x55	U+045e
+0x56	U+045f
+0x57	U+042a
+0x58	U+2116
+0x59	U+0402
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+0490
+0x63	U+0401
+0x64	U+0404
+0x65	U+0405
+0x66	U+0406
+0x67	U+0407
+0x68	U+0408
+0x69	U+0409
+0x6a	U+007c
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+040a
+0x71	U+040b
+0x72	U+040c
+0x73	U+00ad
+0x74	U+040e
+0x75	U+040f
+0x76	U+044e
+0x77	U+0430
+0x78	U+0431
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+0446
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+0434
+0x8b	U+0435
+0x8c	U+0444
+0x8d	U+0433
+0x8e	U+0445
+0x8f	U+0438
+0x90	U+0439
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+043a
+0x9b	U+043b
+0x9c	U+043c
+0x9d	U+043d
+0x9e	U+043e
+0x9f	U+043f
+0xa0	U+044f
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+0440
+0xab	U+0441
+0xac	U+0442
+0xad	U+0443
+0xae	U+0436
+0xaf	U+0432
+0xb0	U+044c
+0xb1	U+044b
+0xb2	U+0437
+0xb3	U+0448
+0xb4	U+044d
+0xb5	U+0449
+0xb6	U+0447
+0xb7	U+044a
+0xb8	U+042e
+0xb9	U+0410
+0xba	U+0411
+0xbb	U+0426
+0xbc	U+0414
+0xbd	U+0415
+0xbe	U+0424
+0xbf	U+0413
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+0425
+0xcb	U+0418
+0xcc	U+0419
+0xcd	U+041a
+0xce	U+041b
+0xcf	U+041c
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+041d
+0xdb	U+041e
+0xdc	U+041f
+0xdd	U+042f
+0xde	U+0420
+0xdf	U+0421
+0xe0	U+005c
+0xe1	U+00a7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+0422
+0xeb	U+0423
+0xec	U+0416
+0xed	U+0412
+0xee	U+042c
+0xef	U+042b
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+0417
+0xfb	U+0428
+0xfc	U+042d
+0xfd	U+0429
+0xfe	U+0427
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1123.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1124.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM1124.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+0401
+0xa2	U+0402
+0xa3	U+0490
+0xa4	U+0404
+0xa5	U+0405
+0xa6	U+0406
+0xa7	U+0407
+0xa8	U+0408
+0xa9	U+0409
+0xaa	U+040a
+0xab	U+040b
+0xac	U+040c
+0xad	U+00ad
+0xae	U+040e
+0xaf	U+040f
+0xb0	U+0410
+0xb1	U+0411
+0xb2	U+0412
+0xb3	U+0413
+0xb4	U+0414
+0xb5	U+0415
+0xb6	U+0416
+0xb7	U+0417
+0xb8	U+0418
+0xb9	U+0419
+0xba	U+041a
+0xbb	U+041b
+0xbc	U+041c
+0xbd	U+041d
+0xbe	U+041e
+0xbf	U+041f
+0xc0	U+0420
+0xc1	U+0421
+0xc2	U+0422
+0xc3	U+0423
+0xc4	U+0424
+0xc5	U+0425
+0xc6	U+0426
+0xc7	U+0427
+0xc8	U+0428
+0xc9	U+0429
+0xca	U+042a
+0xcb	U+042b
+0xcc	U+042c
+0xcd	U+042d
+0xce	U+042e
+0xcf	U+042f
+0xd0	U+0430
+0xd1	U+0431
+0xd2	U+0432
+0xd3	U+0433
+0xd4	U+0434
+0xd5	U+0435
+0xd6	U+0436
+0xd7	U+0437
+0xd8	U+0438
+0xd9	U+0439
+0xda	U+043a
+0xdb	U+043b
+0xdc	U+043c
+0xdd	U+043d
+0xde	U+043e
+0xdf	U+043f
+0xe0	U+0440
+0xe1	U+0441
+0xe2	U+0442
+0xe3	U+0443
+0xe4	U+0444
+0xe5	U+0445
+0xe6	U+0446
+0xe7	U+0447
+0xe8	U+0448
+0xe9	U+0449
+0xea	U+044a
+0xeb	U+044b
+0xec	U+044c
+0xed	U+044d
+0xee	U+044e
+0xef	U+044f
+0xf0	U+2116
+0xf1	U+0451
+0xf2	U+0452
+0xf3	U+0491
+0xf4	U+0454
+0xf5	U+0455
+0xf6	U+0456
+0xf7	U+0457
+0xf8	U+0458
+0xf9	U+0459
+0xfa	U+045a
+0xfb	U+045b
+0xfc	U+045c
+0xfd	U+00a7
+0xfe	U+045e
+0xff	U+045f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1140.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1140.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM037.java with 0x9f <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00a2
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+0021
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+20ac
+0xa0	U+00b5
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+005e
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+005b
+0xbb	U+005d
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1141.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1141.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM273.java with 0x9f <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+007b
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00c4
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+007e
+0x5a	U+00dc
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+005b
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+00a7
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+20ac
+0xa0	U+00b5
+0xa1	U+00df
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+0040
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e4
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00a6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00fc
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+007d
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00d6
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+005c
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+005d
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1142.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1142.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM277.java with 0x5a <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+007d
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+0023
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+20ac
+0x5b	U+00c5
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+0024
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f8
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00a6
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+00c6
+0x7c	U+00d8
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+0040
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+007b
+0x9d	U+00b8
+0x9e	U+005b
+0x9f	U+005d
+0xa0	U+00b5
+0xa1	U+00fc
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e6
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e5
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+007e
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1143.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1143.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM278.java  with 0x5a <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+007b
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+007d
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00a7
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+0060
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+20ac
+0x5b	U+00c5
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+0023
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+0024
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+005c
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00e9
+0x7a	U+003a
+0x7b	U+00c4
+0x7c	U+00d6
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+005d
+0xa0	U+00b5
+0xa1	U+00fc
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+005b
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e4
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00a6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e5
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+007e
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00c9
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+0040
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1144.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1144.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM280.java   with 0x9f <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+007b
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+005c
+0x49	U+00f1
+0x4a	U+00b0
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+005d
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+007d
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+007e
+0x59	U+00df
+0x5a	U+00e9
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f2
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00f9
+0x7a	U+003a
+0x7b	U+00a3
+0x7c	U+00a7
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+005b
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+20ac
+0xa0	U+00b5
+0xa1	U+00ec
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+0023
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+0040
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e0
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00a6
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e8
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+0060
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00e7
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1145.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1145.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM284.java with 0x9f <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00a6
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+0023
+0x6a	U+00f1
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+00d1
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+20ac
+0xa0	U+00b5
+0xa1	U+00a8
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+005e
+0xbb	U+0021
+0xbc	U+00af
+0xbd	U+007e
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1146.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1146.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM285.java with 0x9f <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+0024
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+0021
+0x5b	U+00a3
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+20ac
+0xa0	U+00b5
+0xa1	U+00af
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+005b
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+005e
+0xbb	U+005d
+0xbc	U+007e
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1147.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1147.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM297.java 0x9f <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+0040
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+005c
+0x49	U+00f1
+0x4a	U+00b0
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+007b
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+007d
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+00a7
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f9
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00b5
+0x7a	U+003a
+0x7b	U+00a3
+0x7c	U+00e0
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+005b
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+20ac
+0xa0	U+0060
+0xa1	U+00a8
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+0023
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+005d
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+007e
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e9
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e8
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00a6
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00e7
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1148.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1148.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM500.java 0x9f <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+20ac
+0xa0	U+00b5
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1149.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM1149.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM871.java 0x9f <-> u+20ac
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00de
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+00c6
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00d6
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00f0
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+00d0
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+0060
+0x8d	U+00fd
+0x8e	U+007b
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+007d
+0x9d	U+00b8
+0x9e	U+005d
+0x9f	U+20ac
+0xa0	U+00b5
+0xa1	U+00f6
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+0040
+0xad	U+00dd
+0xae	U+005b
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+005c
+0xbf	U+00d7
+0xc0	U+00fe
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+007e
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e6
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00b4
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+005e
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM273.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM273.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM273.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+007b
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00c4
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+007e
+0x5a	U+00dc
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+005b
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+00a7
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+00df
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+0040
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e4
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00a6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00fc
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+007d
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00d6
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+005c
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+005d
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM273.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM277.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM277.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM277.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+007d
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+0023
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+00a4
+0x5b	U+00c5
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+0024
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f8
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00a6
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+00c6
+0x7c	U+00d8
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+0040
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+007b
+0x9d	U+00b8
+0x9e	U+005b
+0x9f	U+005d
+0xa0	U+00b5
+0xa1	U+00fc
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e6
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e5
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+007e
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM277.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM278.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM278.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM278.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+007b
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+007d
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00a7
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+0060
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+00a4
+0x5b	U+00c5
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+0023
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+0024
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+005c
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00e9
+0x7a	U+003a
+0x7b	U+00c4
+0x7c	U+00d6
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+005d
+0xa0	U+00b5
+0xa1	U+00fc
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+005b
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e4
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00a6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e5
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+007e
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00c9
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+0040
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM278.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM280.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM280.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM280.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+007b
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+005c
+0x49	U+00f1
+0x4a	U+00b0
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+005d
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+007d
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+007e
+0x59	U+00df
+0x5a	U+00e9
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f2
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00f9
+0x7a	U+003a
+0x7b	U+00a3
+0x7c	U+00a7
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+005b
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+00ec
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+0023
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+0040
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e0
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00a6
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e8
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+0060
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00e7
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM280.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM284.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM284.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM284.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00a6
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+0023
+0x6a	U+00f1
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+00d1
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+00a8
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+005e
+0xbb	U+0021
+0xbc	U+00af
+0xbd	U+007e
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM284.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM285.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM285.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM285.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+0024
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+0021
+0x5b	U+00a3
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+00af
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+005b
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+005e
+0xbb	U+005d
+0xbc	U+007e
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM285.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM297.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM297.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM297.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+0040
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+005c
+0x49	U+00f1
+0x4a	U+00b0
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+007b
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+007d
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+00a7
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00f9
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00b5
+0x7a	U+003a
+0x7b	U+00a3
+0x7c	U+00e0
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+005b
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+0060
+0xa1	U+00a8
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+0023
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+005d
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+007e
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+00e9
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e8
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00a6
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00e7
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM297.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM420.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM420.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM420.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+fe7c
+0x43	U+fe7d
+0x44	U+0640
+0x45	U+f8fc
+0x46	U+fe80
+0x47	U+fe81
+0x48	U+fe82
+0x49	U+fe83
+0x4a	U+00a2
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+fe84
+0x52	U+fe85
+0x53	U+fffd
+0x54	U+fffd
+0x55	U+fe8b
+0x56	U+fe8d
+0x57	U+fe8e
+0x58	U+fe8f
+0x59	U+fe91
+0x5a	U+0021
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+fe93
+0x63	U+fe95
+0x64	U+fe97
+0x65	U+fe99
+0x66	U+fe9b
+0x67	U+fe9d
+0x68	U+fe9f
+0x69	U+fea1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+fea3
+0x71	U+fea5
+0x72	U+fea7
+0x73	U+fea9
+0x74	U+feab
+0x75	U+fead
+0x76	U+feaf
+0x77	U+f8f6
+0x78	U+feb3
+0x79	U+060c
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+f8f5
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+feb7
+0x8b	U+f8f4
+0x8c	U+febb
+0x8d	U+f8f7
+0x8e	U+febf
+0x8f	U+fec3
+0x90	U+fec7
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+fec9
+0x9b	U+feca
+0x9c	U+fecb
+0x9d	U+fecc
+0x9e	U+fecd
+0x9f	U+fece
+0xa0	U+fecf
+0xa1	U+00f7
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+fed0
+0xab	U+fed1
+0xac	U+fed3
+0xad	U+fed5
+0xae	U+fed7
+0xaf	U+fed9
+0xb0	U+fedb
+0xb1	U+fedd
+0xb2	U+fef5
+0xb3	U+fef6
+0xb4	U+fef7
+0xb5	U+fef8
+0xb6	U+fffd
+0xb7	U+fffd
+0xb8	U+fefb
+0xb9	U+fefc
+0xba	U+fedf
+0xbb	U+fee1
+0xbc	U+fee3
+0xbd	U+fee5
+0xbe	U+fee7
+0xbf	U+fee9
+0xc0	U+061b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+feeb
+0xcc	U+fffd
+0xcd	U+feec
+0xce	U+fffd
+0xcf	U+feed
+0xd0	U+061f
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+feef
+0xdb	U+fef0
+0xdc	U+fef1
+0xdd	U+fef2
+0xde	U+fef3
+0xdf	U+0660
+0xe0	U+00d7
+0xe1	U+2007
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+0661
+0xeb	U+0662
+0xec	U+fffd
+0xed	U+0663
+0xee	U+0664
+0xef	U+0665
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+fffd
+0xfb	U+0666
+0xfc	U+0667
+0xfd	U+0668
+0xfe	U+0669
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM420.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM424.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM424.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM424.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+05d0
+0x42	U+05d1
+0x43	U+05d2
+0x44	U+05d3
+0x45	U+05d4
+0x46	U+05d5
+0x47	U+05d6
+0x48	U+05d7
+0x49	U+05d8
+0x4a	U+00a2
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+05d9
+0x52	U+05da
+0x53	U+05db
+0x54	U+05dc
+0x55	U+05dd
+0x56	U+05de
+0x57	U+05df
+0x58	U+05e0
+0x59	U+05e1
+0x5a	U+0021
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+05e2
+0x63	U+05e3
+0x64	U+05e4
+0x65	U+05e5
+0x66	U+05e6
+0x67	U+05e7
+0x68	U+05e8
+0x69	U+05e9
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+fffd
+0x71	U+05ea
+0x72	U+fffd
+0x73	U+fffd
+0x74	U+00a0
+0x75	U+fffd
+0x76	U+fffd
+0x77	U+fffd
+0x78	U+2017
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+fffd
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+fffd
+0x9b	U+fffd
+0x9c	U+fffd
+0x9d	U+00b8
+0x9e	U+fffd
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+fffd
+0xab	U+fffd
+0xac	U+fffd
+0xad	U+fffd
+0xae	U+fffd
+0xaf	U+00ae
+0xb0	U+005e
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+2022
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+005b
+0xbb	U+005d
+0xbc	U+203e
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+fffd
+0xcc	U+fffd
+0xcd	U+fffd
+0xce	U+fffd
+0xcf	U+fffd
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+fffd
+0xdc	U+fffd
+0xdd	U+fffd
+0xde	U+fffd
+0xdf	U+fffd
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+fffd
+0xec	U+fffd
+0xed	U+fffd
+0xee	U+fffd
+0xef	U+fffd
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+fffd
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM424.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM437.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM437.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00e4
+0x85	U+00e0
+0x86	U+00e5
+0x87	U+00e7
+0x88	U+00ea
+0x89	U+00eb
+0x8a	U+00e8
+0x8b	U+00ef
+0x8c	U+00ee
+0x8d	U+00ec
+0x8e	U+00c4
+0x8f	U+00c5
+0x90	U+00c9
+0x91	U+00e6
+0x92	U+00c6
+0x93	U+00f4
+0x94	U+00f6
+0x95	U+00f2
+0x96	U+00fb
+0x97	U+00f9
+0x98	U+00ff
+0x99	U+00d6
+0x9a	U+00dc
+0x9b	U+00a2
+0x9c	U+00a3
+0x9d	U+00a5
+0x9e	U+20a7
+0x9f	U+0192
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00f1
+0xa5	U+00d1
+0xa6	U+00aa
+0xa7	U+00ba
+0xa8	U+00bf
+0xa9	U+2310
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00a1
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+2561
+0xb6	U+2562
+0xb7	U+2556
+0xb8	U+2555
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+255c
+0xbe	U+255b
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+255e
+0xc7	U+255f
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+2567
+0xd0	U+2568
+0xd1	U+2564
+0xd2	U+2565
+0xd3	U+2559
+0xd4	U+2558
+0xd5	U+2552
+0xd6	U+2553
+0xd7	U+256b
+0xd8	U+256a
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+03b1
+0xe1	U+00df
+0xe2	U+0393
+0xe3	U+03c0
+0xe4	U+03a3
+0xe5	U+03c3
+0xe6	U+00b5
+0xe7	U+03c4
+0xe8	U+03a6
+0xe9	U+0398
+0xea	U+03a9
+0xeb	U+03b4
+0xec	U+221e
+0xed	U+03c6
+0xee	U+03b5
+0xef	U+2229
+0xf0	U+2261
+0xf1	U+00b1
+0xf2	U+2265
+0xf3	U+2264
+0xf4	U+2320
+0xf5	U+2321
+0xf6	U+00f7
+0xf7	U+2248
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+221a
+0xfc	U+207f
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM500.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM500.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM500.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+00f0
+0x8d	U+00fd
+0x8e	U+00fe
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+00e6
+0x9d	U+00b8
+0x9e	U+00c6
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+00d0
+0xad	U+00dd
+0xae	U+00de
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM500.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM737.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM737.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0391
+0x81	U+0392
+0x82	U+0393
+0x83	U+0394
+0x84	U+0395
+0x85	U+0396
+0x86	U+0397
+0x87	U+0398
+0x88	U+0399
+0x89	U+039a
+0x8a	U+039b
+0x8b	U+039c
+0x8c	U+039d
+0x8d	U+039e
+0x8e	U+039f
+0x8f	U+03a0
+0x90	U+03a1
+0x91	U+03a3
+0x92	U+03a4
+0x93	U+03a5
+0x94	U+03a6
+0x95	U+03a7
+0x96	U+03a8
+0x97	U+03a9
+0x98	U+03b1
+0x99	U+03b2
+0x9a	U+03b3
+0x9b	U+03b4
+0x9c	U+03b5
+0x9d	U+03b6
+0x9e	U+03b7
+0x9f	U+03b8
+0xa0	U+03b9
+0xa1	U+03ba
+0xa2	U+03bb
+0xa3	U+03bc
+0xa4	U+03bd
+0xa5	U+03be
+0xa6	U+03bf
+0xa7	U+03c0
+0xa8	U+03c1
+0xa9	U+03c3
+0xaa	U+03c2
+0xab	U+03c4
+0xac	U+03c5
+0xad	U+03c6
+0xae	U+03c7
+0xaf	U+03c8
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+2561
+0xb6	U+2562
+0xb7	U+2556
+0xb8	U+2555
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+255c
+0xbe	U+255b
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+255e
+0xc7	U+255f
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+2567
+0xd0	U+2568
+0xd1	U+2564
+0xd2	U+2565
+0xd3	U+2559
+0xd4	U+2558
+0xd5	U+2552
+0xd6	U+2553
+0xd7	U+256b
+0xd8	U+256a
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+03c9
+0xe1	U+03ac
+0xe2	U+03ad
+0xe3	U+03ae
+0xe4	U+03ca
+0xe5	U+03af
+0xe6	U+03cc
+0xe7	U+03cd
+0xe8	U+03cb
+0xe9	U+03ce
+0xea	U+0386
+0xeb	U+0388
+0xec	U+0389
+0xed	U+038a
+0xee	U+038c
+0xef	U+038e
+0xf0	U+038f
+0xf1	U+00b1
+0xf2	U+2265
+0xf3	U+2264
+0xf4	U+03aa
+0xf5	U+03ab
+0xf6	U+00f7
+0xf7	U+2248
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+221a
+0xfc	U+207f
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM775.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM775.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0106
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+0101
+0x84	U+00e4
+0x85	U+0123
+0x86	U+00e5
+0x87	U+0107
+0x88	U+0142
+0x89	U+0113
+0x8a	U+0156
+0x8b	U+0157
+0x8c	U+012b
+0x8d	U+0179
+0x8e	U+00c4
+0x8f	U+00c5
+0x90	U+00c9
+0x91	U+00e6
+0x92	U+00c6
+0x93	U+014d
+0x94	U+00f6
+0x95	U+0122
+0x96	U+00a2
+0x97	U+015a
+0x98	U+015b
+0x99	U+00d6
+0x9a	U+00dc
+0x9b	U+00f8
+0x9c	U+00a3
+0x9d	U+00d8
+0x9e	U+00d7
+0x9f	U+00a4
+0xa0	U+0100
+0xa1	U+012a
+0xa2	U+00f3
+0xa3	U+017b
+0xa4	U+017c
+0xa5	U+017a
+0xa6	U+201d
+0xa7	U+00a6
+0xa8	U+00a9
+0xa9	U+00ae
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+0141
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+0104
+0xb6	U+010c
+0xb7	U+0118
+0xb8	U+0116
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+012e
+0xbe	U+0160
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+0172
+0xc7	U+016a
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+017d
+0xd0	U+0105
+0xd1	U+010d
+0xd2	U+0119
+0xd3	U+0117
+0xd4	U+012f
+0xd5	U+0161
+0xd6	U+0173
+0xd7	U+016b
+0xd8	U+017e
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+00d3
+0xe1	U+00df
+0xe2	U+014c
+0xe3	U+0143
+0xe4	U+00f5
+0xe5	U+00d5
+0xe6	U+00b5
+0xe7	U+0144
+0xe8	U+0136
+0xe9	U+0137
+0xea	U+013b
+0xeb	U+013c
+0xec	U+0146
+0xed	U+0112
+0xee	U+0145
+0xef	U+2019
+0xf0	U+00ad
+0xf1	U+00b1
+0xf2	U+201c
+0xf3	U+00be
+0xf4	U+00b6
+0xf5	U+00a7
+0xf6	U+00f7
+0xf7	U+201e
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+00b9
+0xfc	U+00b3
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM838.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM838.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM838.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+0e01
+0x43	U+0e02
+0x44	U+0e03
+0x45	U+0e04
+0x46	U+0e05
+0x47	U+0e06
+0x48	U+0e07
+0x49	U+005b
+0x4a	U+00a2
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+007c
+0x50	U+0026
+0x51	U+0e48
+0x52	U+0e08
+0x53	U+0e09
+0x54	U+0e0a
+0x55	U+0e0b
+0x56	U+0e0c
+0x57	U+0e0d
+0x58	U+0e0e
+0x59	U+005d
+0x5a	U+0021
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00ac
+0x60	U+002d
+0x61	U+002f
+0x62	U+0e0f
+0x63	U+0e10
+0x64	U+0e11
+0x65	U+0e12
+0x66	U+0e13
+0x67	U+0e14
+0x68	U+0e15
+0x69	U+005e
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+0e3f
+0x71	U+0e4e
+0x72	U+0e16
+0x73	U+0e17
+0x74	U+0e18
+0x75	U+0e19
+0x76	U+0e1a
+0x77	U+0e1b
+0x78	U+0e1c
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+0e4f
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+0e1d
+0x8b	U+0e1e
+0x8c	U+0e1f
+0x8d	U+0e20
+0x8e	U+0e21
+0x8f	U+0e22
+0x90	U+0e5a
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+0e23
+0x9b	U+0e24
+0x9c	U+0e25
+0x9d	U+0e26
+0x9e	U+0e27
+0x9f	U+0e28
+0xa0	U+0e5b
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+0e29
+0xab	U+0e2a
+0xac	U+0e2b
+0xad	U+0e2c
+0xae	U+0e2d
+0xaf	U+0e2e
+0xb0	U+0e50
+0xb1	U+0e51
+0xb2	U+0e52
+0xb3	U+0e53
+0xb4	U+0e54
+0xb5	U+0e55
+0xb6	U+0e56
+0xb7	U+0e57
+0xb8	U+0e58
+0xb9	U+0e59
+0xba	U+0e2f
+0xbb	U+0e30
+0xbc	U+0e31
+0xbd	U+0e32
+0xbe	U+0e33
+0xbf	U+0e34
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+0e49
+0xcb	U+0e35
+0xcc	U+0e36
+0xcd	U+0e37
+0xce	U+0e38
+0xcf	U+0e39
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+0e3a
+0xdb	U+0e40
+0xdc	U+0e41
+0xdd	U+0e42
+0xde	U+0e43
+0xdf	U+0e44
+0xe0	U+005c
+0xe1	U+0e4a
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+0e45
+0xeb	U+0e46
+0xec	U+0e47
+0xed	U+0e48
+0xee	U+0e49
+0xef	U+0e4a
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+0e4b
+0xfb	U+0e4c
+0xfc	U+0e4d
+0xfd	U+0e4b
+0xfe	U+0e4c
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM838.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,6 @@
+0x25	U+000a
+0x51	U+0e48
+0xca	U+0e49
+0xe1	U+0e4a
+0xfd	U+0e4b
+0xfe	U+0e4c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM850.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM850.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00e4
+0x85	U+00e0
+0x86	U+00e5
+0x87	U+00e7
+0x88	U+00ea
+0x89	U+00eb
+0x8a	U+00e8
+0x8b	U+00ef
+0x8c	U+00ee
+0x8d	U+00ec
+0x8e	U+00c4
+0x8f	U+00c5
+0x90	U+00c9
+0x91	U+00e6
+0x92	U+00c6
+0x93	U+00f4
+0x94	U+00f6
+0x95	U+00f2
+0x96	U+00fb
+0x97	U+00f9
+0x98	U+00ff
+0x99	U+00d6
+0x9a	U+00dc
+0x9b	U+00f8
+0x9c	U+00a3
+0x9d	U+00d8
+0x9e	U+00d7
+0x9f	U+0192
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00f1
+0xa5	U+00d1
+0xa6	U+00aa
+0xa7	U+00ba
+0xa8	U+00bf
+0xa9	U+00ae
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00a1
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+00c1
+0xb6	U+00c2
+0xb7	U+00c0
+0xb8	U+00a9
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+00a2
+0xbe	U+00a5
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+00e3
+0xc7	U+00c3
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+00a4
+0xd0	U+00f0
+0xd1	U+00d0
+0xd2	U+00ca
+0xd3	U+00cb
+0xd4	U+00c8
+0xd5	U+0131
+0xd6	U+00cd
+0xd7	U+00ce
+0xd8	U+00cf
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+00a6
+0xde	U+00cc
+0xdf	U+2580
+0xe0	U+00d3
+0xe1	U+00df
+0xe2	U+00d4
+0xe3	U+00d2
+0xe4	U+00f5
+0xe5	U+00d5
+0xe6	U+00b5
+0xe7	U+00fe
+0xe8	U+00de
+0xe9	U+00da
+0xea	U+00db
+0xeb	U+00d9
+0xec	U+00fd
+0xed	U+00dd
+0xee	U+00af
+0xef	U+00b4
+0xf0	U+00ad
+0xf1	U+00b1
+0xf2	U+2017
+0xf3	U+00be
+0xf4	U+00b6
+0xf5	U+00a7
+0xf6	U+00f7
+0xf7	U+00b8
+0xf8	U+00b0
+0xf9	U+00a8
+0xfa	U+00b7
+0xfb	U+00b9
+0xfc	U+00b3
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM852.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM852.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00e4
+0x85	U+016f
+0x86	U+0107
+0x87	U+00e7
+0x88	U+0142
+0x89	U+00eb
+0x8a	U+0150
+0x8b	U+0151
+0x8c	U+00ee
+0x8d	U+0179
+0x8e	U+00c4
+0x8f	U+0106
+0x90	U+00c9
+0x91	U+0139
+0x92	U+013a
+0x93	U+00f4
+0x94	U+00f6
+0x95	U+013d
+0x96	U+013e
+0x97	U+015a
+0x98	U+015b
+0x99	U+00d6
+0x9a	U+00dc
+0x9b	U+0164
+0x9c	U+0165
+0x9d	U+0141
+0x9e	U+00d7
+0x9f	U+010d
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+0104
+0xa5	U+0105
+0xa6	U+017d
+0xa7	U+017e
+0xa8	U+0118
+0xa9	U+0119
+0xaa	U+00ac
+0xab	U+017a
+0xac	U+010c
+0xad	U+015f
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+00c1
+0xb6	U+00c2
+0xb7	U+011a
+0xb8	U+015e
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+017b
+0xbe	U+017c
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+0102
+0xc7	U+0103
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+00a4
+0xd0	U+0111
+0xd1	U+0110
+0xd2	U+010e
+0xd3	U+00cb
+0xd4	U+010f
+0xd5	U+0147
+0xd6	U+00cd
+0xd7	U+00ce
+0xd8	U+011b
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+0162
+0xde	U+016e
+0xdf	U+2580
+0xe0	U+00d3
+0xe1	U+00df
+0xe2	U+00d4
+0xe3	U+0143
+0xe4	U+0144
+0xe5	U+0148
+0xe6	U+0160
+0xe7	U+0161
+0xe8	U+0154
+0xe9	U+00da
+0xea	U+0155
+0xeb	U+0170
+0xec	U+00fd
+0xed	U+00dd
+0xee	U+0163
+0xef	U+00b4
+0xf0	U+00ad
+0xf1	U+02dd
+0xf2	U+02db
+0xf3	U+02c7
+0xf4	U+02d8
+0xf5	U+00a7
+0xf6	U+00f7
+0xf7	U+00b8
+0xf8	U+00b0
+0xf9	U+00a8
+0xfa	U+02d9
+0xfb	U+0171
+0xfc	U+0158
+0xfd	U+0159
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM855.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM855.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0452
+0x81	U+0402
+0x82	U+0453
+0x83	U+0403
+0x84	U+0451
+0x85	U+0401
+0x86	U+0454
+0x87	U+0404
+0x88	U+0455
+0x89	U+0405
+0x8a	U+0456
+0x8b	U+0406
+0x8c	U+0457
+0x8d	U+0407
+0x8e	U+0458
+0x8f	U+0408
+0x90	U+0459
+0x91	U+0409
+0x92	U+045a
+0x93	U+040a
+0x94	U+045b
+0x95	U+040b
+0x96	U+045c
+0x97	U+040c
+0x98	U+045e
+0x99	U+040e
+0x9a	U+045f
+0x9b	U+040f
+0x9c	U+044e
+0x9d	U+042e
+0x9e	U+044a
+0x9f	U+042a
+0xa0	U+0430
+0xa1	U+0410
+0xa2	U+0431
+0xa3	U+0411
+0xa4	U+0446
+0xa5	U+0426
+0xa6	U+0434
+0xa7	U+0414
+0xa8	U+0435
+0xa9	U+0415
+0xaa	U+0444
+0xab	U+0424
+0xac	U+0433
+0xad	U+0413
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+0445
+0xb6	U+0425
+0xb7	U+0438
+0xb8	U+0418
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+0439
+0xbe	U+0419
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+043a
+0xc7	U+041a
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+00a4
+0xd0	U+043b
+0xd1	U+041b
+0xd2	U+043c
+0xd3	U+041c
+0xd4	U+043d
+0xd5	U+041d
+0xd6	U+043e
+0xd7	U+041e
+0xd8	U+043f
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+041f
+0xde	U+044f
+0xdf	U+2580
+0xe0	U+042f
+0xe1	U+0440
+0xe2	U+0420
+0xe3	U+0441
+0xe4	U+0421
+0xe5	U+0442
+0xe6	U+0422
+0xe7	U+0443
+0xe8	U+0423
+0xe9	U+0436
+0xea	U+0416
+0xeb	U+0432
+0xec	U+0412
+0xed	U+044c
+0xee	U+042c
+0xef	U+2116
+0xf0	U+00ad
+0xf1	U+044b
+0xf2	U+042b
+0xf3	U+0437
+0xf4	U+0417
+0xf5	U+0448
+0xf6	U+0428
+0xf7	U+044d
+0xf8	U+042d
+0xf9	U+0449
+0xfa	U+0429
+0xfb	U+0447
+0xfc	U+0427
+0xfd	U+00a7
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM856.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM856.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+05d0
+0x81	U+05d1
+0x82	U+05d2
+0x83	U+05d3
+0x84	U+05d4
+0x85	U+05d5
+0x86	U+05d6
+0x87	U+05d7
+0x88	U+05d8
+0x89	U+05d9
+0x8a	U+05da
+0x8b	U+05db
+0x8c	U+05dc
+0x8d	U+05dd
+0x8e	U+05de
+0x8f	U+05df
+0x90	U+05e0
+0x91	U+05e1
+0x92	U+05e2
+0x93	U+05e3
+0x94	U+05e4
+0x95	U+05e5
+0x96	U+05e6
+0x97	U+05e7
+0x98	U+05e8
+0x99	U+05e9
+0x9a	U+05ea
+0x9b	U+fffd
+0x9c	U+00a3
+0x9d	U+fffd
+0x9e	U+00d7
+0x9f	U+fffd
+0xa0	U+fffd
+0xa1	U+fffd
+0xa2	U+fffd
+0xa3	U+fffd
+0xa4	U+fffd
+0xa5	U+fffd
+0xa6	U+fffd
+0xa7	U+fffd
+0xa8	U+fffd
+0xa9	U+00ae
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+fffd
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+fffd
+0xb6	U+fffd
+0xb7	U+fffd
+0xb8	U+00a9
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+00a2
+0xbe	U+00a5
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+fffd
+0xc7	U+fffd
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+00a4
+0xd0	U+fffd
+0xd1	U+fffd
+0xd2	U+fffd
+0xd3	U+fffd
+0xd4	U+fffd
+0xd5	U+fffd
+0xd6	U+fffd
+0xd7	U+fffd
+0xd8	U+fffd
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+00a6
+0xde	U+fffd
+0xdf	U+2580
+0xe0	U+fffd
+0xe1	U+fffd
+0xe2	U+fffd
+0xe3	U+fffd
+0xe4	U+fffd
+0xe5	U+fffd
+0xe6	U+00b5
+0xe7	U+fffd
+0xe8	U+fffd
+0xe9	U+fffd
+0xea	U+fffd
+0xeb	U+fffd
+0xec	U+fffd
+0xed	U+fffd
+0xee	U+203e
+0xef	U+00b4
+0xf0	U+00ad
+0xf1	U+00b1
+0xf2	U+2017
+0xf3	U+00be
+0xf4	U+00b6
+0xf5	U+00a7
+0xf6	U+00f7
+0xf7	U+00b8
+0xf8	U+00b0
+0xf9	U+00a8
+0xfa	U+2022
+0xfb	U+00b9
+0xfc	U+00b3
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM857.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM857.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00e4
+0x85	U+00e0
+0x86	U+00e5
+0x87	U+00e7
+0x88	U+00ea
+0x89	U+00eb
+0x8a	U+00e8
+0x8b	U+00ef
+0x8c	U+00ee
+0x8d	U+0131
+0x8e	U+00c4
+0x8f	U+00c5
+0x90	U+00c9
+0x91	U+00e6
+0x92	U+00c6
+0x93	U+00f4
+0x94	U+00f6
+0x95	U+00f2
+0x96	U+00fb
+0x97	U+00f9
+0x98	U+0130
+0x99	U+00d6
+0x9a	U+00dc
+0x9b	U+00f8
+0x9c	U+00a3
+0x9d	U+00d8
+0x9e	U+015e
+0x9f	U+015f
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00f1
+0xa5	U+00d1
+0xa6	U+011e
+0xa7	U+011f
+0xa8	U+00bf
+0xa9	U+00ae
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00a1
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+00c1
+0xb6	U+00c2
+0xb7	U+00c0
+0xb8	U+00a9
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+00a2
+0xbe	U+00a5
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+00e3
+0xc7	U+00c3
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+00a4
+0xd0	U+00ba
+0xd1	U+00aa
+0xd2	U+00ca
+0xd3	U+00cb
+0xd4	U+00c8
+0xd5	U+fffd
+0xd6	U+00cd
+0xd7	U+00ce
+0xd8	U+00cf
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+00a6
+0xde	U+00cc
+0xdf	U+2580
+0xe0	U+00d3
+0xe1	U+00df
+0xe2	U+00d4
+0xe3	U+00d2
+0xe4	U+00f5
+0xe5	U+00d5
+0xe6	U+00b5
+0xe7	U+fffd
+0xe8	U+00d7
+0xe9	U+00da
+0xea	U+00db
+0xeb	U+00d9
+0xec	U+00ec
+0xed	U+00ff
+0xee	U+00af
+0xef	U+00b4
+0xf0	U+00ad
+0xf1	U+00b1
+0xf2	U+fffd
+0xf3	U+00be
+0xf4	U+00b6
+0xf5	U+00a7
+0xf6	U+00f7
+0xf7	U+00b8
+0xf8	U+00b0
+0xf9	U+00a8
+0xfa	U+00b7
+0xfb	U+00b9
+0xfc	U+00b3
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM858.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM858.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00e4
+0x85	U+00e0
+0x86	U+00e5
+0x87	U+00e7
+0x88	U+00ea
+0x89	U+00eb
+0x8a	U+00e8
+0x8b	U+00ef
+0x8c	U+00ee
+0x8d	U+00ec
+0x8e	U+00c4
+0x8f	U+00c5
+0x90	U+00c9
+0x91	U+00e6
+0x92	U+00c6
+0x93	U+00f4
+0x94	U+00f6
+0x95	U+00f2
+0x96	U+00fb
+0x97	U+00f9
+0x98	U+00ff
+0x99	U+00d6
+0x9a	U+00dc
+0x9b	U+00f8
+0x9c	U+00a3
+0x9d	U+00d8
+0x9e	U+00d7
+0x9f	U+0192
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00f1
+0xa5	U+00d1
+0xa6	U+00aa
+0xa7	U+00ba
+0xa8	U+00bf
+0xa9	U+00ae
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00a1
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+00c1
+0xb6	U+00c2
+0xb7	U+00c0
+0xb8	U+00a9
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+00a2
+0xbe	U+00a5
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+00e3
+0xc7	U+00c3
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+00a4
+0xd0	U+00f0
+0xd1	U+00d0
+0xd2	U+00ca
+0xd3	U+00cb
+0xd4	U+00c8
+0xd5	U+20ac
+0xd6	U+00cd
+0xd7	U+00ce
+0xd8	U+00cf
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+00a6
+0xde	U+00cc
+0xdf	U+2580
+0xe0	U+00d3
+0xe1	U+00df
+0xe2	U+00d4
+0xe3	U+00d2
+0xe4	U+00f5
+0xe5	U+00d5
+0xe6	U+00b5
+0xe7	U+00fe
+0xe8	U+00de
+0xe9	U+00da
+0xea	U+00db
+0xeb	U+00d9
+0xec	U+00fd
+0xed	U+00dd
+0xee	U+00af
+0xef	U+00b4
+0xf0	U+00ad
+0xf1	U+00b1
+0xf2	U+2017
+0xf3	U+00be
+0xf4	U+00b6
+0xf5	U+00a7
+0xf6	U+00f7
+0xf7	U+00b8
+0xf8	U+00b0
+0xf9	U+00a8
+0xfa	U+00b7
+0xfb	U+00b9
+0xfc	U+00b3
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM860.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM860.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00e3
+0x85	U+00e0
+0x86	U+00c1
+0x87	U+00e7
+0x88	U+00ea
+0x89	U+00ca
+0x8a	U+00e8
+0x8b	U+00cd
+0x8c	U+00d4
+0x8d	U+00ec
+0x8e	U+00c3
+0x8f	U+00c2
+0x90	U+00c9
+0x91	U+00c0
+0x92	U+00c8
+0x93	U+00f4
+0x94	U+00f5
+0x95	U+00f2
+0x96	U+00da
+0x97	U+00f9
+0x98	U+00cc
+0x99	U+00d5
+0x9a	U+00dc
+0x9b	U+00a2
+0x9c	U+00a3
+0x9d	U+00d9
+0x9e	U+20a7
+0x9f	U+00d3
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00f1
+0xa5	U+00d1
+0xa6	U+00aa
+0xa7	U+00ba
+0xa8	U+00bf
+0xa9	U+00d2
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00a1
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+2561
+0xb6	U+2562
+0xb7	U+2556
+0xb8	U+2555
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+255c
+0xbe	U+255b
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+255e
+0xc7	U+255f
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+2567
+0xd0	U+2568
+0xd1	U+2564
+0xd2	U+2565
+0xd3	U+2559
+0xd4	U+2558
+0xd5	U+2552
+0xd6	U+2553
+0xd7	U+256b
+0xd8	U+256a
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+03b1
+0xe1	U+00df
+0xe2	U+0393
+0xe3	U+03c0
+0xe4	U+03a3
+0xe5	U+03c3
+0xe6	U+00b5
+0xe7	U+03c4
+0xe8	U+03a6
+0xe9	U+0398
+0xea	U+03a9
+0xeb	U+03b4
+0xec	U+221e
+0xed	U+03c6
+0xee	U+03b5
+0xef	U+2229
+0xf0	U+2261
+0xf1	U+00b1
+0xf2	U+2265
+0xf3	U+2264
+0xf4	U+2320
+0xf5	U+2321
+0xf6	U+00f7
+0xf7	U+2248
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+221a
+0xfc	U+207f
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM861.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM861.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00e4
+0x85	U+00e0
+0x86	U+00e5
+0x87	U+00e7
+0x88	U+00ea
+0x89	U+00eb
+0x8a	U+00e8
+0x8b	U+00d0
+0x8c	U+00f0
+0x8d	U+00de
+0x8e	U+00c4
+0x8f	U+00c5
+0x90	U+00c9
+0x91	U+00e6
+0x92	U+00c6
+0x93	U+00f4
+0x94	U+00f6
+0x95	U+00fe
+0x96	U+00fb
+0x97	U+00dd
+0x98	U+00fd
+0x99	U+00d6
+0x9a	U+00dc
+0x9b	U+00f8
+0x9c	U+00a3
+0x9d	U+00d8
+0x9e	U+20a7
+0x9f	U+0192
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00c1
+0xa5	U+00cd
+0xa6	U+00d3
+0xa7	U+00da
+0xa8	U+00bf
+0xa9	U+2310
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00a1
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+2561
+0xb6	U+2562
+0xb7	U+2556
+0xb8	U+2555
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+255c
+0xbe	U+255b
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+255e
+0xc7	U+255f
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+2567
+0xd0	U+2568
+0xd1	U+2564
+0xd2	U+2565
+0xd3	U+2559
+0xd4	U+2558
+0xd5	U+2552
+0xd6	U+2553
+0xd7	U+256b
+0xd8	U+256a
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+03b1
+0xe1	U+00df
+0xe2	U+0393
+0xe3	U+03c0
+0xe4	U+03a3
+0xe5	U+03c3
+0xe6	U+00b5
+0xe7	U+03c4
+0xe8	U+03a6
+0xe9	U+0398
+0xea	U+03a9
+0xeb	U+03b4
+0xec	U+221e
+0xed	U+03c6
+0xee	U+03b5
+0xef	U+2229
+0xf0	U+2261
+0xf1	U+00b1
+0xf2	U+2265
+0xf3	U+2264
+0xf4	U+2320
+0xf5	U+2321
+0xf6	U+00f7
+0xf7	U+2248
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+221a
+0xfc	U+207f
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM862.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM862.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+05d0
+0x81	U+05d1
+0x82	U+05d2
+0x83	U+05d3
+0x84	U+05d4
+0x85	U+05d5
+0x86	U+05d6
+0x87	U+05d7
+0x88	U+05d8
+0x89	U+05d9
+0x8a	U+05da
+0x8b	U+05db
+0x8c	U+05dc
+0x8d	U+05dd
+0x8e	U+05de
+0x8f	U+05df
+0x90	U+05e0
+0x91	U+05e1
+0x92	U+05e2
+0x93	U+05e3
+0x94	U+05e4
+0x95	U+05e5
+0x96	U+05e6
+0x97	U+05e7
+0x98	U+05e8
+0x99	U+05e9
+0x9a	U+05ea
+0x9b	U+00a2
+0x9c	U+00a3
+0x9d	U+00a5
+0x9e	U+20a7
+0x9f	U+0192
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00f1
+0xa5	U+00d1
+0xa6	U+00aa
+0xa7	U+00ba
+0xa8	U+00bf
+0xa9	U+2310
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00a1
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+2561
+0xb6	U+2562
+0xb7	U+2556
+0xb8	U+2555
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+255c
+0xbe	U+255b
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+255e
+0xc7	U+255f
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+2567
+0xd0	U+2568
+0xd1	U+2564
+0xd2	U+2565
+0xd3	U+2559
+0xd4	U+2558
+0xd5	U+2552
+0xd6	U+2553
+0xd7	U+256b
+0xd8	U+256a
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+03b1
+0xe1	U+00df
+0xe2	U+0393
+0xe3	U+03c0
+0xe4	U+03a3
+0xe5	U+03c3
+0xe6	U+00b5
+0xe7	U+03c4
+0xe8	U+03a6
+0xe9	U+0398
+0xea	U+03a9
+0xeb	U+03b4
+0xec	U+221e
+0xed	U+03c6
+0xee	U+03b5
+0xef	U+2229
+0xf0	U+2261
+0xf1	U+00b1
+0xf2	U+2265
+0xf3	U+2264
+0xf4	U+2320
+0xf5	U+2321
+0xf6	U+00f7
+0xf7	U+2248
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+221a
+0xfc	U+207f
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM863.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM863.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00c2
+0x85	U+00e0
+0x86	U+00b6
+0x87	U+00e7
+0x88	U+00ea
+0x89	U+00eb
+0x8a	U+00e8
+0x8b	U+00ef
+0x8c	U+00ee
+0x8d	U+2017
+0x8e	U+00c0
+0x8f	U+00a7
+0x90	U+00c9
+0x91	U+00c8
+0x92	U+00ca
+0x93	U+00f4
+0x94	U+00cb
+0x95	U+00cf
+0x96	U+00fb
+0x97	U+00f9
+0x98	U+00a4
+0x99	U+00d4
+0x9a	U+00dc
+0x9b	U+00a2
+0x9c	U+00a3
+0x9d	U+00d9
+0x9e	U+00db
+0x9f	U+0192
+0xa0	U+00a6
+0xa1	U+00b4
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00a8
+0xa5	U+00b8
+0xa6	U+00b3
+0xa7	U+00af
+0xa8	U+00ce
+0xa9	U+2310
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00be
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+2561
+0xb6	U+2562
+0xb7	U+2556
+0xb8	U+2555
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+255c
+0xbe	U+255b
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+255e
+0xc7	U+255f
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+2567
+0xd0	U+2568
+0xd1	U+2564
+0xd2	U+2565
+0xd3	U+2559
+0xd4	U+2558
+0xd5	U+2552
+0xd6	U+2553
+0xd7	U+256b
+0xd8	U+256a
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+03b1
+0xe1	U+00df
+0xe2	U+0393
+0xe3	U+03c0
+0xe4	U+03a3
+0xe5	U+03c3
+0xe6	U+00b5
+0xe7	U+03c4
+0xe8	U+03a6
+0xe9	U+0398
+0xea	U+03a9
+0xeb	U+03b4
+0xec	U+221e
+0xed	U+03c6
+0xee	U+03b5
+0xef	U+2229
+0xf0	U+2261
+0xf1	U+00b1
+0xf2	U+2265
+0xf3	U+2264
+0xf4	U+2320
+0xf5	U+2321
+0xf6	U+00f7
+0xf7	U+2248
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+221a
+0xfc	U+207f
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM864.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM864.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+066a
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00b0
+0x81	U+00b7
+0x82	U+2219
+0x83	U+221a
+0x84	U+2592
+0x85	U+2500
+0x86	U+2502
+0x87	U+253c
+0x88	U+2524
+0x89	U+252c
+0x8a	U+251c
+0x8b	U+2534
+0x8c	U+2510
+0x8d	U+250c
+0x8e	U+2514
+0x8f	U+2518
+0x90	U+03b2
+0x91	U+221e
+0x92	U+03c6
+0x93	U+00b1
+0x94	U+00bd
+0x95	U+00bc
+0x96	U+2248
+0x97	U+00ab
+0x98	U+00bb
+0x99	U+fef7
+0x9a	U+fef8
+0x9b	U+fffd
+0x9c	U+fffd
+0x9d	U+fefb
+0x9e	U+fefc
+0x9f	U+fffd
+0xa0	U+00a0
+0xa1	U+00ad
+0xa2	U+fe82
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+fe84
+0xa6	U+fffd
+0xa7	U+fffd
+0xa8	U+fe8e
+0xa9	U+fe8f
+0xaa	U+fe95
+0xab	U+fe99
+0xac	U+060c
+0xad	U+fe9d
+0xae	U+fea1
+0xaf	U+fea5
+0xb0	U+0660
+0xb1	U+0661
+0xb2	U+0662
+0xb3	U+0663
+0xb4	U+0664
+0xb5	U+0665
+0xb6	U+0666
+0xb7	U+0667
+0xb8	U+0668
+0xb9	U+0669
+0xba	U+fed1
+0xbb	U+061b
+0xbc	U+feb1
+0xbd	U+feb5
+0xbe	U+feb9
+0xbf	U+061f
+0xc0	U+00a2
+0xc1	U+fe80
+0xc2	U+fe81
+0xc3	U+fe83
+0xc4	U+fe85
+0xc5	U+feca
+0xc6	U+fe8b
+0xc7	U+fe8d
+0xc8	U+fe91
+0xc9	U+fe93
+0xca	U+fe97
+0xcb	U+fe9b
+0xcc	U+fe9f
+0xcd	U+fea3
+0xce	U+fea7
+0xcf	U+fea9
+0xd0	U+feab
+0xd1	U+fead
+0xd2	U+feaf
+0xd3	U+feb3
+0xd4	U+feb7
+0xd5	U+febb
+0xd6	U+febf
+0xd7	U+fec1
+0xd8	U+fec5
+0xd9	U+fecb
+0xda	U+fecf
+0xdb	U+00a6
+0xdc	U+00ac
+0xdd	U+00f7
+0xde	U+00d7
+0xdf	U+fec9
+0xe0	U+0640
+0xe1	U+fed3
+0xe2	U+fed7
+0xe3	U+fedb
+0xe4	U+fedf
+0xe5	U+fee3
+0xe6	U+fee7
+0xe7	U+feeb
+0xe8	U+feed
+0xe9	U+feef
+0xea	U+fef3
+0xeb	U+febd
+0xec	U+fecc
+0xed	U+fece
+0xee	U+fecd
+0xef	U+fee1
+0xf0	U+fe7d
+0xf1	U+0651
+0xf2	U+fee5
+0xf3	U+fee9
+0xf4	U+feec
+0xf5	U+fef0
+0xf6	U+fef2
+0xf7	U+fed0
+0xf8	U+fed5
+0xf9	U+fef5
+0xfa	U+fef6
+0xfb	U+fedd
+0xfc	U+fed9
+0xfd	U+fef1
+0xfe	U+25a0
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM865.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM865.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c7
+0x81	U+00fc
+0x82	U+00e9
+0x83	U+00e2
+0x84	U+00e4
+0x85	U+00e0
+0x86	U+00e5
+0x87	U+00e7
+0x88	U+00ea
+0x89	U+00eb
+0x8a	U+00e8
+0x8b	U+00ef
+0x8c	U+00ee
+0x8d	U+00ec
+0x8e	U+00c4
+0x8f	U+00c5
+0x90	U+00c9
+0x91	U+00e6
+0x92	U+00c6
+0x93	U+00f4
+0x94	U+00f6
+0x95	U+00f2
+0x96	U+00fb
+0x97	U+00f9
+0x98	U+00ff
+0x99	U+00d6
+0x9a	U+00dc
+0x9b	U+00f8
+0x9c	U+00a3
+0x9d	U+00d8
+0x9e	U+20a7
+0x9f	U+0192
+0xa0	U+00e1
+0xa1	U+00ed
+0xa2	U+00f3
+0xa3	U+00fa
+0xa4	U+00f1
+0xa5	U+00d1
+0xa6	U+00aa
+0xa7	U+00ba
+0xa8	U+00bf
+0xa9	U+2310
+0xaa	U+00ac
+0xab	U+00bd
+0xac	U+00bc
+0xad	U+00a1
+0xae	U+00ab
+0xaf	U+00a4
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+2561
+0xb6	U+2562
+0xb7	U+2556
+0xb8	U+2555
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+255c
+0xbe	U+255b
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+255e
+0xc7	U+255f
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+2567
+0xd0	U+2568
+0xd1	U+2564
+0xd2	U+2565
+0xd3	U+2559
+0xd4	U+2558
+0xd5	U+2552
+0xd6	U+2553
+0xd7	U+256b
+0xd8	U+256a
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+03b1
+0xe1	U+00df
+0xe2	U+0393
+0xe3	U+03c0
+0xe4	U+03a3
+0xe5	U+03c3
+0xe6	U+00b5
+0xe7	U+03c4
+0xe8	U+03a6
+0xe9	U+0398
+0xea	U+03a9
+0xeb	U+03b4
+0xec	U+221e
+0xed	U+03c6
+0xee	U+03b5
+0xef	U+2229
+0xf0	U+2261
+0xf1	U+00b1
+0xf2	U+2265
+0xf3	U+2264
+0xf4	U+2320
+0xf5	U+2321
+0xf6	U+00f7
+0xf7	U+2248
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+221a
+0xfc	U+207f
+0xfd	U+00b2
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM866.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM866.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0410
+0x81	U+0411
+0x82	U+0412
+0x83	U+0413
+0x84	U+0414
+0x85	U+0415
+0x86	U+0416
+0x87	U+0417
+0x88	U+0418
+0x89	U+0419
+0x8a	U+041a
+0x8b	U+041b
+0x8c	U+041c
+0x8d	U+041d
+0x8e	U+041e
+0x8f	U+041f
+0x90	U+0420
+0x91	U+0421
+0x92	U+0422
+0x93	U+0423
+0x94	U+0424
+0x95	U+0425
+0x96	U+0426
+0x97	U+0427
+0x98	U+0428
+0x99	U+0429
+0x9a	U+042a
+0x9b	U+042b
+0x9c	U+042c
+0x9d	U+042d
+0x9e	U+042e
+0x9f	U+042f
+0xa0	U+0430
+0xa1	U+0431
+0xa2	U+0432
+0xa3	U+0433
+0xa4	U+0434
+0xa5	U+0435
+0xa6	U+0436
+0xa7	U+0437
+0xa8	U+0438
+0xa9	U+0439
+0xaa	U+043a
+0xab	U+043b
+0xac	U+043c
+0xad	U+043d
+0xae	U+043e
+0xaf	U+043f
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+2561
+0xb6	U+2562
+0xb7	U+2556
+0xb8	U+2555
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+255c
+0xbe	U+255b
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+255e
+0xc7	U+255f
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+2567
+0xd0	U+2568
+0xd1	U+2564
+0xd2	U+2565
+0xd3	U+2559
+0xd4	U+2558
+0xd5	U+2552
+0xd6	U+2553
+0xd7	U+256b
+0xd8	U+256a
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+258c
+0xde	U+2590
+0xdf	U+2580
+0xe0	U+0440
+0xe1	U+0441
+0xe2	U+0442
+0xe3	U+0443
+0xe4	U+0444
+0xe5	U+0445
+0xe6	U+0446
+0xe7	U+0447
+0xe8	U+0448
+0xe9	U+0449
+0xea	U+044a
+0xeb	U+044b
+0xec	U+044c
+0xed	U+044d
+0xee	U+044e
+0xef	U+044f
+0xf0	U+0401
+0xf1	U+0451
+0xf2	U+0404
+0xf3	U+0454
+0xf4	U+0407
+0xf5	U+0457
+0xf6	U+040e
+0xf7	U+045e
+0xf8	U+00b0
+0xf9	U+2219
+0xfa	U+00b7
+0xfb	U+221a
+0xfc	U+2116
+0xfd	U+00a4
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM868.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM868.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+06f0
+0x81	U+06f1
+0x82	U+06f2
+0x83	U+06f3
+0x84	U+06f4
+0x85	U+06f5
+0x86	U+06f6
+0x87	U+06f7
+0x88	U+06f8
+0x89	U+06f9
+0x8a	U+060c
+0x8b	U+061b
+0x8c	U+061f
+0x8d	U+fe81
+0x8e	U+fe8d
+0x8f	U+fe8e
+0x90	U+f8fb
+0x91	U+fe8f
+0x92	U+fe91
+0x93	U+fb56
+0x94	U+fb58
+0x95	U+fe93
+0x96	U+fe95
+0x97	U+fe97
+0x98	U+fb66
+0x99	U+fb68
+0x9a	U+fe99
+0x9b	U+fe9b
+0x9c	U+fe9d
+0x9d	U+fe9f
+0x9e	U+fb7a
+0x9f	U+fb7c
+0xa0	U+fea1
+0xa1	U+fea3
+0xa2	U+fea5
+0xa3	U+fea7
+0xa4	U+fea9
+0xa5	U+fb88
+0xa6	U+feab
+0xa7	U+fead
+0xa8	U+fb8c
+0xa9	U+feaf
+0xaa	U+fb8a
+0xab	U+feb1
+0xac	U+feb3
+0xad	U+feb5
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+feb7
+0xb6	U+feb9
+0xb7	U+febb
+0xb8	U+febd
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+febf
+0xbe	U+fec3
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+fec7
+0xc7	U+fec9
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+feca
+0xd0	U+fecb
+0xd1	U+fecc
+0xd2	U+fecd
+0xd3	U+fece
+0xd4	U+fecf
+0xd5	U+fed0
+0xd6	U+fed1
+0xd7	U+fed3
+0xd8	U+fed5
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+fed7
+0xde	U+fb8e
+0xdf	U+2580
+0xe0	U+fedb
+0xe1	U+fb92
+0xe2	U+fb94
+0xe3	U+fedd
+0xe4	U+fedf
+0xe5	U+fee0
+0xe6	U+fee1
+0xe7	U+fee3
+0xe8	U+fb9e
+0xe9	U+fee5
+0xea	U+fee7
+0xeb	U+fe85
+0xec	U+feed
+0xed	U+fba6
+0xee	U+fba8
+0xef	U+fba9
+0xf0	U+00ad
+0xf1	U+fbaa
+0xf2	U+fe80
+0xf3	U+fe89
+0xf4	U+fe8a
+0xf5	U+fe8b
+0xf6	U+fbfc
+0xf7	U+fbfd
+0xf8	U+fbfe
+0xf9	U+fbb0
+0xfa	U+fbae
+0xfb	U+fe7c
+0xfc	U+fe7d
+0xfd	U+fffd
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM869.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM869.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+fffd
+0x81	U+fffd
+0x82	U+fffd
+0x83	U+fffd
+0x84	U+fffd
+0x85	U+fffd
+0x86	U+0386
+0x87	U+fffd
+0x88	U+00b7
+0x89	U+00ac
+0x8a	U+00a6
+0x8b	U+2018
+0x8c	U+2019
+0x8d	U+0388
+0x8e	U+2015
+0x8f	U+0389
+0x90	U+038a
+0x91	U+03aa
+0x92	U+038c
+0x93	U+fffd
+0x94	U+fffd
+0x95	U+038e
+0x96	U+03ab
+0x97	U+00a9
+0x98	U+038f
+0x99	U+00b2
+0x9a	U+00b3
+0x9b	U+03ac
+0x9c	U+00a3
+0x9d	U+03ad
+0x9e	U+03ae
+0x9f	U+03af
+0xa0	U+03ca
+0xa1	U+0390
+0xa2	U+03cc
+0xa3	U+03cd
+0xa4	U+0391
+0xa5	U+0392
+0xa6	U+0393
+0xa7	U+0394
+0xa8	U+0395
+0xa9	U+0396
+0xaa	U+0397
+0xab	U+00bd
+0xac	U+0398
+0xad	U+0399
+0xae	U+00ab
+0xaf	U+00bb
+0xb0	U+2591
+0xb1	U+2592
+0xb2	U+2593
+0xb3	U+2502
+0xb4	U+2524
+0xb5	U+039a
+0xb6	U+039b
+0xb7	U+039c
+0xb8	U+039d
+0xb9	U+2563
+0xba	U+2551
+0xbb	U+2557
+0xbc	U+255d
+0xbd	U+039e
+0xbe	U+039f
+0xbf	U+2510
+0xc0	U+2514
+0xc1	U+2534
+0xc2	U+252c
+0xc3	U+251c
+0xc4	U+2500
+0xc5	U+253c
+0xc6	U+03a0
+0xc7	U+03a1
+0xc8	U+255a
+0xc9	U+2554
+0xca	U+2569
+0xcb	U+2566
+0xcc	U+2560
+0xcd	U+2550
+0xce	U+256c
+0xcf	U+03a3
+0xd0	U+03a4
+0xd1	U+03a5
+0xd2	U+03a6
+0xd3	U+03a7
+0xd4	U+03a8
+0xd5	U+03a9
+0xd6	U+03b1
+0xd7	U+03b2
+0xd8	U+03b3
+0xd9	U+2518
+0xda	U+250c
+0xdb	U+2588
+0xdc	U+2584
+0xdd	U+03b4
+0xde	U+03b5
+0xdf	U+2580
+0xe0	U+03b6
+0xe1	U+03b7
+0xe2	U+03b8
+0xe3	U+03b9
+0xe4	U+03ba
+0xe5	U+03bb
+0xe6	U+03bc
+0xe7	U+03bd
+0xe8	U+03be
+0xe9	U+03bf
+0xea	U+03c0
+0xeb	U+03c1
+0xec	U+03c3
+0xed	U+03c2
+0xee	U+03c4
+0xef	U+0384
+0xf0	U+00ad
+0xf1	U+00b1
+0xf2	U+03c5
+0xf3	U+03c6
+0xf4	U+03c7
+0xf5	U+00a7
+0xf6	U+03c8
+0xf7	U+0385
+0xf8	U+00b0
+0xf9	U+00a8
+0xfa	U+03c9
+0xfb	U+03cb
+0xfc	U+03b0
+0xfd	U+03ce
+0xfe	U+25a0
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM870.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM870.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM870.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+0163
+0x45	U+00e1
+0x46	U+0103
+0x47	U+010d
+0x48	U+00e7
+0x49	U+0107
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+0119
+0x53	U+00eb
+0x54	U+016f
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+013e
+0x58	U+013a
+0x59	U+00df
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+02dd
+0x65	U+00c1
+0x66	U+0102
+0x67	U+010c
+0x68	U+00c7
+0x69	U+0106
+0x6a	U+007c
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+02c7
+0x71	U+00c9
+0x72	U+0118
+0x73	U+00cb
+0x74	U+016e
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+013d
+0x78	U+0139
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+02d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+015b
+0x8b	U+0148
+0x8c	U+0111
+0x8d	U+00fd
+0x8e	U+0159
+0x8f	U+015f
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+0142
+0x9b	U+0144
+0x9c	U+0161
+0x9d	U+00b8
+0x9e	U+02db
+0x9f	U+00a4
+0xa0	U+0105
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+015a
+0xab	U+0147
+0xac	U+0110
+0xad	U+00dd
+0xae	U+0158
+0xaf	U+015e
+0xb0	U+02d9
+0xb1	U+0104
+0xb2	U+017c
+0xb3	U+0162
+0xb4	U+017b
+0xb5	U+00a7
+0xb6	U+017e
+0xb7	U+017a
+0xb8	U+017d
+0xb9	U+0179
+0xba	U+0141
+0xbb	U+0143
+0xbc	U+0160
+0xbd	U+00a8
+0xbe	U+00b4
+0xbf	U+00d7
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+00f6
+0xcd	U+0155
+0xce	U+00f3
+0xcf	U+0151
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+011a
+0xdb	U+0171
+0xdc	U+00fc
+0xdd	U+0165
+0xde	U+00fa
+0xdf	U+011b
+0xe0	U+005c
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+010f
+0xeb	U+00d4
+0xec	U+00d6
+0xed	U+0154
+0xee	U+00d3
+0xef	U+0150
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+010e
+0xfb	U+0170
+0xfc	U+00dc
+0xfd	U+0164
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM870.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM871.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM871.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM871.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+00e2
+0x43	U+00e4
+0x44	U+00e0
+0x45	U+00e1
+0x46	U+00e3
+0x47	U+00e5
+0x48	U+00e7
+0x49	U+00f1
+0x4a	U+00de
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+00e9
+0x52	U+00ea
+0x53	U+00eb
+0x54	U+00e8
+0x55	U+00ed
+0x56	U+00ee
+0x57	U+00ef
+0x58	U+00ec
+0x59	U+00df
+0x5a	U+00c6
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+00d6
+0x60	U+002d
+0x61	U+002f
+0x62	U+00c2
+0x63	U+00c4
+0x64	U+00c0
+0x65	U+00c1
+0x66	U+00c3
+0x67	U+00c5
+0x68	U+00c7
+0x69	U+00d1
+0x6a	U+00a6
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00f8
+0x71	U+00c9
+0x72	U+00ca
+0x73	U+00cb
+0x74	U+00c8
+0x75	U+00cd
+0x76	U+00ce
+0x77	U+00cf
+0x78	U+00cc
+0x79	U+00f0
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+00d0
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+00d8
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+00ab
+0x8b	U+00bb
+0x8c	U+0060
+0x8d	U+00fd
+0x8e	U+007b
+0x8f	U+00b1
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+00aa
+0x9b	U+00ba
+0x9c	U+007d
+0x9d	U+00b8
+0x9e	U+005d
+0x9f	U+00a4
+0xa0	U+00b5
+0xa1	U+00f6
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+00a1
+0xab	U+00bf
+0xac	U+0040
+0xad	U+00dd
+0xae	U+005b
+0xaf	U+00ae
+0xb0	U+00a2
+0xb1	U+00a3
+0xb2	U+00a5
+0xb3	U+00b7
+0xb4	U+00a9
+0xb5	U+00a7
+0xb6	U+00b6
+0xb7	U+00bc
+0xb8	U+00bd
+0xb9	U+00be
+0xba	U+00ac
+0xbb	U+007c
+0xbc	U+00af
+0xbd	U+00a8
+0xbe	U+005c
+0xbf	U+00d7
+0xc0	U+00fe
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+00f4
+0xcc	U+007e
+0xcd	U+00f2
+0xce	U+00f3
+0xcf	U+00f5
+0xd0	U+00e6
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b9
+0xdb	U+00fb
+0xdc	U+00fc
+0xdd	U+00f9
+0xde	U+00fa
+0xdf	U+00ff
+0xe0	U+00b4
+0xe1	U+00f7
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00d4
+0xec	U+005e
+0xed	U+00d2
+0xee	U+00d3
+0xef	U+00d5
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00db
+0xfc	U+00dc
+0xfd	U+00d9
+0xfe	U+00da
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM871.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM874.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM874.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+fffd
+0x83	U+fffd
+0x84	U+fffd
+0x85	U+fffd
+0x86	U+fffd
+0x87	U+fffd
+0x88	U+fffd
+0x89	U+fffd
+0x8a	U+fffd
+0x8b	U+fffd
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+fffd
+0x92	U+fffd
+0x93	U+fffd
+0x94	U+fffd
+0x95	U+fffd
+0x96	U+fffd
+0x97	U+fffd
+0x98	U+fffd
+0x99	U+fffd
+0x9a	U+fffd
+0x9b	U+fffd
+0x9c	U+fffd
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+fffd
+0xa0	U+0e48
+0xa1	U+0e01
+0xa2	U+0e02
+0xa3	U+0e03
+0xa4	U+0e04
+0xa5	U+0e05
+0xa6	U+0e06
+0xa7	U+0e07
+0xa8	U+0e08
+0xa9	U+0e09
+0xaa	U+0e0a
+0xab	U+0e0b
+0xac	U+0e0c
+0xad	U+0e0d
+0xae	U+0e0e
+0xaf	U+0e0f
+0xb0	U+0e10
+0xb1	U+0e11
+0xb2	U+0e12
+0xb3	U+0e13
+0xb4	U+0e14
+0xb5	U+0e15
+0xb6	U+0e16
+0xb7	U+0e17
+0xb8	U+0e18
+0xb9	U+0e19
+0xba	U+0e1a
+0xbb	U+0e1b
+0xbc	U+0e1c
+0xbd	U+0e1d
+0xbe	U+0e1e
+0xbf	U+0e1f
+0xc0	U+0e20
+0xc1	U+0e21
+0xc2	U+0e22
+0xc3	U+0e23
+0xc4	U+0e24
+0xc5	U+0e25
+0xc6	U+0e26
+0xc7	U+0e27
+0xc8	U+0e28
+0xc9	U+0e29
+0xca	U+0e2a
+0xcb	U+0e2b
+0xcc	U+0e2c
+0xcd	U+0e2d
+0xce	U+0e2e
+0xcf	U+0e2f
+0xd0	U+0e30
+0xd1	U+0e31
+0xd2	U+0e32
+0xd3	U+0e33
+0xd4	U+0e34
+0xd5	U+0e35
+0xd6	U+0e36
+0xd7	U+0e37
+0xd8	U+0e38
+0xd9	U+0e39
+0xda	U+0e3a
+0xdb	U+0e49
+0xdc	U+0e4a
+0xdd	U+0e4b
+0xde	U+0e4c
+0xdf	U+0e3f
+0xe0	U+0e40
+0xe1	U+0e41
+0xe2	U+0e42
+0xe3	U+0e43
+0xe4	U+0e44
+0xe5	U+0e45
+0xe6	U+0e46
+0xe7	U+0e47
+0xe8	U+0e48
+0xe9	U+0e49
+0xea	U+0e4a
+0xeb	U+0e4b
+0xec	U+0e4c
+0xed	U+0e4d
+0xee	U+0e4e
+0xef	U+0e4f
+0xf0	U+0e50
+0xf1	U+0e51
+0xf2	U+0e52
+0xf3	U+0e53
+0xf4	U+0e54
+0xf5	U+0e55
+0xf6	U+0e56
+0xf7	U+0e57
+0xf8	U+0e58
+0xf9	U+0e59
+0xfa	U+0e5a
+0xfb	U+0e5b
+0xfc	U+00a2
+0xfd	U+00ac
+0xfe	U+00a6
+0xff	U+00a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM874.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,5 @@
+0xa0	U+0e48
+0xdb	U+0e49
+0xdc	U+0e4a
+0xdd	U+0e4b
+0xde	U+0e4c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM875.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM875.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM875.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+0391
+0x42	U+0392
+0x43	U+0393
+0x44	U+0394
+0x45	U+0395
+0x46	U+0396
+0x47	U+0397
+0x48	U+0398
+0x49	U+0399
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+039a
+0x52	U+039b
+0x53	U+039c
+0x54	U+039d
+0x55	U+039e
+0x56	U+039f
+0x57	U+03a0
+0x58	U+03a1
+0x59	U+03a3
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+03a4
+0x63	U+03a5
+0x64	U+03a6
+0x65	U+03a7
+0x66	U+03a8
+0x67	U+03a9
+0x68	U+03aa
+0x69	U+03ab
+0x6a	U+007c
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+00a8
+0x71	U+0386
+0x72	U+0388
+0x73	U+0389
+0x74	U+00a0
+0x75	U+038a
+0x76	U+038c
+0x77	U+038e
+0x78	U+038f
+0x79	U+0060
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+0385
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+03b1
+0x8b	U+03b2
+0x8c	U+03b3
+0x8d	U+03b4
+0x8e	U+03b5
+0x8f	U+03b6
+0x90	U+00b0
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+03b7
+0x9b	U+03b8
+0x9c	U+03b9
+0x9d	U+03ba
+0x9e	U+03bb
+0x9f	U+03bc
+0xa0	U+00b4
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+03bd
+0xab	U+03be
+0xac	U+03bf
+0xad	U+03c0
+0xae	U+03c1
+0xaf	U+03c3
+0xb0	U+00a3
+0xb1	U+03ac
+0xb2	U+03ad
+0xb3	U+03ae
+0xb4	U+03ca
+0xb5	U+03af
+0xb6	U+03cc
+0xb7	U+03cd
+0xb8	U+03cb
+0xb9	U+03ce
+0xba	U+03c2
+0xbb	U+03c4
+0xbc	U+03c5
+0xbd	U+03c6
+0xbe	U+03c7
+0xbf	U+03c8
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+03c9
+0xcc	U+0390
+0xcd	U+03b0
+0xce	U+2018
+0xcf	U+2015
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+00b1
+0xdb	U+00bd
+0xdc	U+fffd
+0xdd	U+0387
+0xde	U+2019
+0xdf	U+00a6
+0xe0	U+005c
+0xe1	U+fffd
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+00b2
+0xeb	U+00a7
+0xec	U+fffd
+0xed	U+fffd
+0xee	U+00ab
+0xef	U+00ac
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+00b3
+0xfb	U+00a9
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+00bb
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM875.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM918.c2b	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x15	U+0085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM918.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM918.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+009c
+0x05	U+0009
+0x06	U+0086
+0x07	U+007f
+0x08	U+0097
+0x09	U+008d
+0x0a	U+008e
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+009d
+0x15	U+000a
+0x16	U+0008
+0x17	U+0087
+0x18	U+0018
+0x19	U+0019
+0x1a	U+0092
+0x1b	U+008f
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0080
+0x21	U+0081
+0x22	U+0082
+0x23	U+0083
+0x24	U+0084
+0x25	U+000a
+0x26	U+0017
+0x27	U+001b
+0x28	U+0088
+0x29	U+0089
+0x2a	U+008a
+0x2b	U+008b
+0x2c	U+008c
+0x2d	U+0005
+0x2e	U+0006
+0x2f	U+0007
+0x30	U+0090
+0x31	U+0091
+0x32	U+0016
+0x33	U+0093
+0x34	U+0094
+0x35	U+0095
+0x36	U+0096
+0x37	U+0004
+0x38	U+0098
+0x39	U+0099
+0x3a	U+009a
+0x3b	U+009b
+0x3c	U+0014
+0x3d	U+0015
+0x3e	U+009e
+0x3f	U+001a
+0x40	U+0020
+0x41	U+00a0
+0x42	U+060c
+0x43	U+061b
+0x44	U+061f
+0x45	U+fe81
+0x46	U+fe8d
+0x47	U+fe8e
+0x48	U+f8fb
+0x49	U+fe8f
+0x4a	U+005b
+0x4b	U+002e
+0x4c	U+003c
+0x4d	U+0028
+0x4e	U+002b
+0x4f	U+0021
+0x50	U+0026
+0x51	U+fe91
+0x52	U+fb56
+0x53	U+fb58
+0x54	U+fe93
+0x55	U+fe95
+0x56	U+fe97
+0x57	U+fb66
+0x58	U+fb68
+0x59	U+fe99
+0x5a	U+005d
+0x5b	U+0024
+0x5c	U+002a
+0x5d	U+0029
+0x5e	U+003b
+0x5f	U+005e
+0x60	U+002d
+0x61	U+002f
+0x62	U+fe9b
+0x63	U+fe9d
+0x64	U+fe9f
+0x65	U+fb7a
+0x66	U+fb7c
+0x67	U+fea1
+0x68	U+fea3
+0x69	U+fea5
+0x6a	U+0060
+0x6b	U+002c
+0x6c	U+0025
+0x6d	U+005f
+0x6e	U+003e
+0x6f	U+003f
+0x70	U+06f0
+0x71	U+06f1
+0x72	U+06f2
+0x73	U+06f3
+0x74	U+06f4
+0x75	U+06f5
+0x76	U+06f6
+0x77	U+06f7
+0x78	U+06f8
+0x79	U+06f9
+0x7a	U+003a
+0x7b	U+0023
+0x7c	U+0040
+0x7d	U+0027
+0x7e	U+003d
+0x7f	U+0022
+0x80	U+fea7
+0x81	U+0061
+0x82	U+0062
+0x83	U+0063
+0x84	U+0064
+0x85	U+0065
+0x86	U+0066
+0x87	U+0067
+0x88	U+0068
+0x89	U+0069
+0x8a	U+fea9
+0x8b	U+fb88
+0x8c	U+feab
+0x8d	U+fead
+0x8e	U+fb8c
+0x8f	U+feaf
+0x90	U+fb8a
+0x91	U+006a
+0x92	U+006b
+0x93	U+006c
+0x94	U+006d
+0x95	U+006e
+0x96	U+006f
+0x97	U+0070
+0x98	U+0071
+0x99	U+0072
+0x9a	U+feb1
+0x9b	U+feb3
+0x9c	U+feb5
+0x9d	U+feb7
+0x9e	U+feb9
+0x9f	U+febb
+0xa0	U+febd
+0xa1	U+007e
+0xa2	U+0073
+0xa3	U+0074
+0xa4	U+0075
+0xa5	U+0076
+0xa6	U+0077
+0xa7	U+0078
+0xa8	U+0079
+0xa9	U+007a
+0xaa	U+febf
+0xab	U+fec3
+0xac	U+fec7
+0xad	U+fec9
+0xae	U+feca
+0xaf	U+fecb
+0xb0	U+fecc
+0xb1	U+fecd
+0xb2	U+fece
+0xb3	U+fecf
+0xb4	U+fed0
+0xb5	U+fed1
+0xb6	U+fed3
+0xb7	U+fed5
+0xb8	U+fed7
+0xb9	U+fb8e
+0xba	U+fedb
+0xbb	U+007c
+0xbc	U+fb92
+0xbd	U+fb94
+0xbe	U+fedd
+0xbf	U+fedf
+0xc0	U+007b
+0xc1	U+0041
+0xc2	U+0042
+0xc3	U+0043
+0xc4	U+0044
+0xc5	U+0045
+0xc6	U+0046
+0xc7	U+0047
+0xc8	U+0048
+0xc9	U+0049
+0xca	U+00ad
+0xcb	U+fee0
+0xcc	U+fee1
+0xcd	U+fee3
+0xce	U+fb9e
+0xcf	U+fee5
+0xd0	U+007d
+0xd1	U+004a
+0xd2	U+004b
+0xd3	U+004c
+0xd4	U+004d
+0xd5	U+004e
+0xd6	U+004f
+0xd7	U+0050
+0xd8	U+0051
+0xd9	U+0052
+0xda	U+fee7
+0xdb	U+fe85
+0xdc	U+feed
+0xdd	U+fba6
+0xde	U+fba8
+0xdf	U+fba9
+0xe0	U+005c
+0xe1	U+fbaa
+0xe2	U+0053
+0xe3	U+0054
+0xe4	U+0055
+0xe5	U+0056
+0xe6	U+0057
+0xe7	U+0058
+0xe8	U+0059
+0xe9	U+005a
+0xea	U+fe80
+0xeb	U+fe89
+0xec	U+fe8a
+0xed	U+fe8b
+0xee	U+fbfc
+0xef	U+fbfd
+0xf0	U+0030
+0xf1	U+0031
+0xf2	U+0032
+0xf3	U+0033
+0xf4	U+0034
+0xf5	U+0035
+0xf6	U+0036
+0xf7	U+0037
+0xf8	U+0038
+0xf9	U+0039
+0xfa	U+fbfe
+0xfb	U+fbb0
+0xfc	U+fbae
+0xfd	U+fe7c
+0xfe	U+fe7d
+0xff	U+009f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM918.nr	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1 @@
+0x25	U+000a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM921.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM921.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+201d
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+201e
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00d8
+0xa9	U+00a9
+0xaa	U+0156
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00c6
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+201c
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00f8
+0xb9	U+00b9
+0xba	U+0157
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00e6
+0xc0	U+0104
+0xc1	U+012e
+0xc2	U+0100
+0xc3	U+0106
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+0118
+0xc7	U+0112
+0xc8	U+010c
+0xc9	U+00c9
+0xca	U+0179
+0xcb	U+0116
+0xcc	U+0122
+0xcd	U+0136
+0xce	U+012a
+0xcf	U+013b
+0xd0	U+0160
+0xd1	U+0143
+0xd2	U+0145
+0xd3	U+00d3
+0xd4	U+014c
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+0172
+0xd9	U+0141
+0xda	U+015a
+0xdb	U+016a
+0xdc	U+00dc
+0xdd	U+017b
+0xde	U+017d
+0xdf	U+00df
+0xe0	U+0105
+0xe1	U+012f
+0xe2	U+0101
+0xe3	U+0107
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+0119
+0xe7	U+0113
+0xe8	U+010d
+0xe9	U+00e9
+0xea	U+017a
+0xeb	U+0117
+0xec	U+0123
+0xed	U+0137
+0xee	U+012b
+0xef	U+013c
+0xf0	U+0161
+0xf1	U+0144
+0xf2	U+0146
+0xf3	U+00f3
+0xf4	U+014d
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+0173
+0xf9	U+0142
+0xfa	U+015b
+0xfb	U+016b
+0xfc	U+00fc
+0xfd	U+017c
+0xfe	U+017e
+0xff	U+2019
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/IBM922.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from IBM922.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+00a1
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+00aa
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+203e
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+00b9
+0xba	U+00ba
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00bf
+0xc0	U+00c0
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+00c3
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+00c6
+0xc7	U+00c7
+0xc8	U+00c8
+0xc9	U+00c9
+0xca	U+00ca
+0xcb	U+00cb
+0xcc	U+00cc
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+00cf
+0xd0	U+0160
+0xd1	U+00d1
+0xd2	U+00d2
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+00d8
+0xd9	U+00d9
+0xda	U+00da
+0xdb	U+00db
+0xdc	U+00dc
+0xdd	U+00dd
+0xde	U+017d
+0xdf	U+00df
+0xe0	U+00e0
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+00e3
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+00e6
+0xe7	U+00e7
+0xe8	U+00e8
+0xe9	U+00e9
+0xea	U+00ea
+0xeb	U+00eb
+0xec	U+00ec
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+00ef
+0xf0	U+0161
+0xf1	U+00f1
+0xf2	U+00f2
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+00f8
+0xf9	U+00f9
+0xfa	U+00fa
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+00fd
+0xfe	U+017e
+0xff	U+00ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_11.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_11.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+0e01
+0xa2	U+0e02
+0xa3	U+0e03
+0xa4	U+0e04
+0xa5	U+0e05
+0xa6	U+0e06
+0xa7	U+0e07
+0xa8	U+0e08
+0xa9	U+0e09
+0xaa	U+0e0a
+0xab	U+0e0b
+0xac	U+0e0c
+0xad	U+0e0d
+0xae	U+0e0e
+0xaf	U+0e0f
+0xb0	U+0e10
+0xb1	U+0e11
+0xb2	U+0e12
+0xb3	U+0e13
+0xb4	U+0e14
+0xb5	U+0e15
+0xb6	U+0e16
+0xb7	U+0e17
+0xb8	U+0e18
+0xb9	U+0e19
+0xba	U+0e1a
+0xbb	U+0e1b
+0xbc	U+0e1c
+0xbd	U+0e1d
+0xbe	U+0e1e
+0xbf	U+0e1f
+0xc0	U+0e20
+0xc1	U+0e21
+0xc2	U+0e22
+0xc3	U+0e23
+0xc4	U+0e24
+0xc5	U+0e25
+0xc6	U+0e26
+0xc7	U+0e27
+0xc8	U+0e28
+0xc9	U+0e29
+0xca	U+0e2a
+0xcb	U+0e2b
+0xcc	U+0e2c
+0xcd	U+0e2d
+0xce	U+0e2e
+0xcf	U+0e2f
+0xd0	U+0e30
+0xd1	U+0e31
+0xd2	U+0e32
+0xd3	U+0e33
+0xd4	U+0e34
+0xd5	U+0e35
+0xd6	U+0e36
+0xd7	U+0e37
+0xd8	U+0e38
+0xd9	U+0e39
+0xda	U+0e3a
+0xdb	U+fffd
+0xdc	U+fffd
+0xdd	U+fffd
+0xde	U+fffd
+0xdf	U+0e3f
+0xe0	U+0e40
+0xe1	U+0e41
+0xe2	U+0e42
+0xe3	U+0e43
+0xe4	U+0e44
+0xe5	U+0e45
+0xe6	U+0e46
+0xe7	U+0e47
+0xe8	U+0e48
+0xe9	U+0e49
+0xea	U+0e4a
+0xeb	U+0e4b
+0xec	U+0e4c
+0xed	U+0e4d
+0xee	U+0e4e
+0xef	U+0e4f
+0xf0	U+0e50
+0xf1	U+0e51
+0xf2	U+0e52
+0xf3	U+0e53
+0xf4	U+0e54
+0xf5	U+0e55
+0xf6	U+0e56
+0xf7	U+0e57
+0xf8	U+0e58
+0xf9	U+0e59
+0xfa	U+0e5a
+0xfb	U+0e5b
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_13.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_13.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+201d
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+201e
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00d8
+0xa9	U+00a9
+0xaa	U+0156
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00c6
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+201c
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00f8
+0xb9	U+00b9
+0xba	U+0157
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00e6
+0xc0	U+0104
+0xc1	U+012e
+0xc2	U+0100
+0xc3	U+0106
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+0118
+0xc7	U+0112
+0xc8	U+010c
+0xc9	U+00c9
+0xca	U+0179
+0xcb	U+0116
+0xcc	U+0122
+0xcd	U+0136
+0xce	U+012a
+0xcf	U+013b
+0xd0	U+0160
+0xd1	U+0143
+0xd2	U+0145
+0xd3	U+00d3
+0xd4	U+014c
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+0172
+0xd9	U+0141
+0xda	U+015a
+0xdb	U+016a
+0xdc	U+00dc
+0xdd	U+017b
+0xde	U+017d
+0xdf	U+00df
+0xe0	U+0105
+0xe1	U+012f
+0xe2	U+0101
+0xe3	U+0107
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+0119
+0xe7	U+0113
+0xe8	U+010d
+0xe9	U+00e9
+0xea	U+017a
+0xeb	U+0117
+0xec	U+0123
+0xed	U+0137
+0xee	U+012b
+0xef	U+013c
+0xf0	U+0161
+0xf1	U+0144
+0xf2	U+0146
+0xf3	U+00f3
+0xf4	U+014d
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+0173
+0xf9	U+0142
+0xfa	U+015b
+0xfb	U+016b
+0xfc	U+00fc
+0xfd	U+017c
+0xfe	U+017e
+0xff	U+2019
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_15.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_15.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+00a1
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+20ac
+0xa5	U+00a5
+0xa6	U+0160
+0xa7	U+00a7
+0xa8	U+0161
+0xa9	U+00a9
+0xaa	U+00aa
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+017d
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+017e
+0xb9	U+00b9
+0xba	U+00ba
+0xbb	U+00bb
+0xbc	U+0152
+0xbd	U+0153
+0xbe	U+0178
+0xbf	U+00bf
+0xc0	U+00c0
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+00c3
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+00c6
+0xc7	U+00c7
+0xc8	U+00c8
+0xc9	U+00c9
+0xca	U+00ca
+0xcb	U+00cb
+0xcc	U+00cc
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+00cf
+0xd0	U+00d0
+0xd1	U+00d1
+0xd2	U+00d2
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+00d8
+0xd9	U+00d9
+0xda	U+00da
+0xdb	U+00db
+0xdc	U+00dc
+0xdd	U+00dd
+0xde	U+00de
+0xdf	U+00df
+0xe0	U+00e0
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+00e3
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+00e6
+0xe7	U+00e7
+0xe8	U+00e8
+0xe9	U+00e9
+0xea	U+00ea
+0xeb	U+00eb
+0xec	U+00ec
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+00ef
+0xf0	U+00f0
+0xf1	U+00f1
+0xf2	U+00f2
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+00f8
+0xf9	U+00f9
+0xfa	U+00fa
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+00fd
+0xfe	U+00fe
+0xff	U+00ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_2.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_2.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+0104
+0xa2	U+02d8
+0xa3	U+0141
+0xa4	U+00a4
+0xa5	U+013d
+0xa6	U+015a
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+0160
+0xaa	U+015e
+0xab	U+0164
+0xac	U+0179
+0xad	U+00ad
+0xae	U+017d
+0xaf	U+017b
+0xb0	U+00b0
+0xb1	U+0105
+0xb2	U+02db
+0xb3	U+0142
+0xb4	U+00b4
+0xb5	U+013e
+0xb6	U+015b
+0xb7	U+02c7
+0xb8	U+00b8
+0xb9	U+0161
+0xba	U+015f
+0xbb	U+0165
+0xbc	U+017a
+0xbd	U+02dd
+0xbe	U+017e
+0xbf	U+017c
+0xc0	U+0154
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+0102
+0xc4	U+00c4
+0xc5	U+0139
+0xc6	U+0106
+0xc7	U+00c7
+0xc8	U+010c
+0xc9	U+00c9
+0xca	U+0118
+0xcb	U+00cb
+0xcc	U+011a
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+010e
+0xd0	U+0110
+0xd1	U+0143
+0xd2	U+0147
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+0150
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+0158
+0xd9	U+016e
+0xda	U+00da
+0xdb	U+0170
+0xdc	U+00dc
+0xdd	U+00dd
+0xde	U+0162
+0xdf	U+00df
+0xe0	U+0155
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+0103
+0xe4	U+00e4
+0xe5	U+013a
+0xe6	U+0107
+0xe7	U+00e7
+0xe8	U+010d
+0xe9	U+00e9
+0xea	U+0119
+0xeb	U+00eb
+0xec	U+011b
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+010f
+0xf0	U+0111
+0xf1	U+0144
+0xf2	U+0148
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+0151
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+0159
+0xf9	U+016f
+0xfa	U+00fa
+0xfb	U+0171
+0xfc	U+00fc
+0xfd	U+00fd
+0xfe	U+0163
+0xff	U+02d9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_3.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_3.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+0126
+0xa2	U+02d8
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+fffd
+0xa6	U+0124
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+0130
+0xaa	U+015e
+0xab	U+011e
+0xac	U+0134
+0xad	U+00ad
+0xae	U+fffd
+0xaf	U+017b
+0xb0	U+00b0
+0xb1	U+0127
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+0125
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+0131
+0xba	U+015f
+0xbb	U+011f
+0xbc	U+0135
+0xbd	U+00bd
+0xbe	U+fffd
+0xbf	U+017c
+0xc0	U+00c0
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+fffd
+0xc4	U+00c4
+0xc5	U+010a
+0xc6	U+0108
+0xc7	U+00c7
+0xc8	U+00c8
+0xc9	U+00c9
+0xca	U+00ca
+0xcb	U+00cb
+0xcc	U+00cc
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+00cf
+0xd0	U+fffd
+0xd1	U+00d1
+0xd2	U+00d2
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+0120
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+011c
+0xd9	U+00d9
+0xda	U+00da
+0xdb	U+00db
+0xdc	U+00dc
+0xdd	U+016c
+0xde	U+015c
+0xdf	U+00df
+0xe0	U+00e0
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+fffd
+0xe4	U+00e4
+0xe5	U+010b
+0xe6	U+0109
+0xe7	U+00e7
+0xe8	U+00e8
+0xe9	U+00e9
+0xea	U+00ea
+0xeb	U+00eb
+0xec	U+00ec
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+00ef
+0xf0	U+fffd
+0xf1	U+00f1
+0xf2	U+00f2
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+0121
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+011d
+0xf9	U+00f9
+0xfa	U+00fa
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+016d
+0xfe	U+015d
+0xff	U+02d9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_4.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_4.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+0104
+0xa2	U+0138
+0xa3	U+0156
+0xa4	U+00a4
+0xa5	U+0128
+0xa6	U+013b
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+0160
+0xaa	U+0112
+0xab	U+0122
+0xac	U+0166
+0xad	U+00ad
+0xae	U+017d
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+0105
+0xb2	U+02db
+0xb3	U+0157
+0xb4	U+00b4
+0xb5	U+0129
+0xb6	U+013c
+0xb7	U+02c7
+0xb8	U+00b8
+0xb9	U+0161
+0xba	U+0113
+0xbb	U+0123
+0xbc	U+0167
+0xbd	U+014a
+0xbe	U+017e
+0xbf	U+014b
+0xc0	U+0100
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+00c3
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+00c6
+0xc7	U+012e
+0xc8	U+010c
+0xc9	U+00c9
+0xca	U+0118
+0xcb	U+00cb
+0xcc	U+0116
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+012a
+0xd0	U+0110
+0xd1	U+0145
+0xd2	U+014c
+0xd3	U+0136
+0xd4	U+00d4
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+00d8
+0xd9	U+0172
+0xda	U+00da
+0xdb	U+00db
+0xdc	U+00dc
+0xdd	U+0168
+0xde	U+016a
+0xdf	U+00df
+0xe0	U+0101
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+00e3
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+00e6
+0xe7	U+012f
+0xe8	U+010d
+0xe9	U+00e9
+0xea	U+0119
+0xeb	U+00eb
+0xec	U+0117
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+012b
+0xf0	U+0111
+0xf1	U+0146
+0xf2	U+014d
+0xf3	U+0137
+0xf4	U+00f4
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+00f8
+0xf9	U+0173
+0xfa	U+00fa
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+0169
+0xfe	U+016b
+0xff	U+02d9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_5.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_5.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+0401
+0xa2	U+0402
+0xa3	U+0403
+0xa4	U+0404
+0xa5	U+0405
+0xa6	U+0406
+0xa7	U+0407
+0xa8	U+0408
+0xa9	U+0409
+0xaa	U+040a
+0xab	U+040b
+0xac	U+040c
+0xad	U+00ad
+0xae	U+040e
+0xaf	U+040f
+0xb0	U+0410
+0xb1	U+0411
+0xb2	U+0412
+0xb3	U+0413
+0xb4	U+0414
+0xb5	U+0415
+0xb6	U+0416
+0xb7	U+0417
+0xb8	U+0418
+0xb9	U+0419
+0xba	U+041a
+0xbb	U+041b
+0xbc	U+041c
+0xbd	U+041d
+0xbe	U+041e
+0xbf	U+041f
+0xc0	U+0420
+0xc1	U+0421
+0xc2	U+0422
+0xc3	U+0423
+0xc4	U+0424
+0xc5	U+0425
+0xc6	U+0426
+0xc7	U+0427
+0xc8	U+0428
+0xc9	U+0429
+0xca	U+042a
+0xcb	U+042b
+0xcc	U+042c
+0xcd	U+042d
+0xce	U+042e
+0xcf	U+042f
+0xd0	U+0430
+0xd1	U+0431
+0xd2	U+0432
+0xd3	U+0433
+0xd4	U+0434
+0xd5	U+0435
+0xd6	U+0436
+0xd7	U+0437
+0xd8	U+0438
+0xd9	U+0439
+0xda	U+043a
+0xdb	U+043b
+0xdc	U+043c
+0xdd	U+043d
+0xde	U+043e
+0xdf	U+043f
+0xe0	U+0440
+0xe1	U+0441
+0xe2	U+0442
+0xe3	U+0443
+0xe4	U+0444
+0xe5	U+0445
+0xe6	U+0446
+0xe7	U+0447
+0xe8	U+0448
+0xe9	U+0449
+0xea	U+044a
+0xeb	U+044b
+0xec	U+044c
+0xed	U+044d
+0xee	U+044e
+0xef	U+044f
+0xf0	U+2116
+0xf1	U+0451
+0xf2	U+0452
+0xf3	U+0453
+0xf4	U+0454
+0xf5	U+0455
+0xf6	U+0456
+0xf7	U+0457
+0xf8	U+0458
+0xf9	U+0459
+0xfa	U+045a
+0xfb	U+045b
+0xfc	U+045c
+0xfd	U+00a7
+0xfe	U+045e
+0xff	U+045f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_6.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_6.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+fffd
+0xa2	U+fffd
+0xa3	U+fffd
+0xa4	U+00a4
+0xa5	U+fffd
+0xa6	U+fffd
+0xa7	U+fffd
+0xa8	U+fffd
+0xa9	U+fffd
+0xaa	U+fffd
+0xab	U+fffd
+0xac	U+060c
+0xad	U+00ad
+0xae	U+fffd
+0xaf	U+fffd
+0xb0	U+fffd
+0xb1	U+fffd
+0xb2	U+fffd
+0xb3	U+fffd
+0xb4	U+fffd
+0xb5	U+fffd
+0xb6	U+fffd
+0xb7	U+fffd
+0xb8	U+fffd
+0xb9	U+fffd
+0xba	U+fffd
+0xbb	U+061b
+0xbc	U+fffd
+0xbd	U+fffd
+0xbe	U+fffd
+0xbf	U+061f
+0xc0	U+fffd
+0xc1	U+0621
+0xc2	U+0622
+0xc3	U+0623
+0xc4	U+0624
+0xc5	U+0625
+0xc6	U+0626
+0xc7	U+0627
+0xc8	U+0628
+0xc9	U+0629
+0xca	U+062a
+0xcb	U+062b
+0xcc	U+062c
+0xcd	U+062d
+0xce	U+062e
+0xcf	U+062f
+0xd0	U+0630
+0xd1	U+0631
+0xd2	U+0632
+0xd3	U+0633
+0xd4	U+0634
+0xd5	U+0635
+0xd6	U+0636
+0xd7	U+0637
+0xd8	U+0638
+0xd9	U+0639
+0xda	U+063a
+0xdb	U+fffd
+0xdc	U+fffd
+0xdd	U+fffd
+0xde	U+fffd
+0xdf	U+fffd
+0xe0	U+0640
+0xe1	U+0641
+0xe2	U+0642
+0xe3	U+0643
+0xe4	U+0644
+0xe5	U+0645
+0xe6	U+0646
+0xe7	U+0647
+0xe8	U+0648
+0xe9	U+0649
+0xea	U+064a
+0xeb	U+064b
+0xec	U+064c
+0xed	U+064d
+0xee	U+064e
+0xef	U+064f
+0xf0	U+0650
+0xf1	U+0651
+0xf2	U+0652
+0xf3	U+fffd
+0xf4	U+fffd
+0xf5	U+fffd
+0xf6	U+fffd
+0xf7	U+fffd
+0xf8	U+fffd
+0xf9	U+fffd
+0xfa	U+fffd
+0xfb	U+fffd
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_7.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_7.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+2018
+0xa2	U+2019
+0xa3	U+00a3
+0xa4	U+20ac
+0xa5	U+20af
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+037a
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+fffd
+0xaf	U+2015
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+0384
+0xb5	U+0385
+0xb6	U+0386
+0xb7	U+00b7
+0xb8	U+0388
+0xb9	U+0389
+0xba	U+038a
+0xbb	U+00bb
+0xbc	U+038c
+0xbd	U+00bd
+0xbe	U+038e
+0xbf	U+038f
+0xc0	U+0390
+0xc1	U+0391
+0xc2	U+0392
+0xc3	U+0393
+0xc4	U+0394
+0xc5	U+0395
+0xc6	U+0396
+0xc7	U+0397
+0xc8	U+0398
+0xc9	U+0399
+0xca	U+039a
+0xcb	U+039b
+0xcc	U+039c
+0xcd	U+039d
+0xce	U+039e
+0xcf	U+039f
+0xd0	U+03a0
+0xd1	U+03a1
+0xd2	U+fffd
+0xd3	U+03a3
+0xd4	U+03a4
+0xd5	U+03a5
+0xd6	U+03a6
+0xd7	U+03a7
+0xd8	U+03a8
+0xd9	U+03a9
+0xda	U+03aa
+0xdb	U+03ab
+0xdc	U+03ac
+0xdd	U+03ad
+0xde	U+03ae
+0xdf	U+03af
+0xe0	U+03b0
+0xe1	U+03b1
+0xe2	U+03b2
+0xe3	U+03b3
+0xe4	U+03b4
+0xe5	U+03b5
+0xe6	U+03b6
+0xe7	U+03b7
+0xe8	U+03b8
+0xe9	U+03b9
+0xea	U+03ba
+0xeb	U+03bb
+0xec	U+03bc
+0xed	U+03bd
+0xee	U+03be
+0xef	U+03bf
+0xf0	U+03c0
+0xf1	U+03c1
+0xf2	U+03c2
+0xf3	U+03c3
+0xf4	U+03c4
+0xf5	U+03c5
+0xf6	U+03c6
+0xf7	U+03c7
+0xf8	U+03c8
+0xf9	U+03c9
+0xfa	U+03ca
+0xfb	U+03cb
+0xfc	U+03cc
+0xfd	U+03cd
+0xfe	U+03ce
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_8.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_8.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+fffd
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+00d7
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+00b9
+0xba	U+00f7
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+fffd
+0xc0	U+fffd
+0xc1	U+fffd
+0xc2	U+fffd
+0xc3	U+fffd
+0xc4	U+fffd
+0xc5	U+fffd
+0xc6	U+fffd
+0xc7	U+fffd
+0xc8	U+fffd
+0xc9	U+fffd
+0xca	U+fffd
+0xcb	U+fffd
+0xcc	U+fffd
+0xcd	U+fffd
+0xce	U+fffd
+0xcf	U+fffd
+0xd0	U+fffd
+0xd1	U+fffd
+0xd2	U+fffd
+0xd3	U+fffd
+0xd4	U+fffd
+0xd5	U+fffd
+0xd6	U+fffd
+0xd7	U+fffd
+0xd8	U+fffd
+0xd9	U+fffd
+0xda	U+fffd
+0xdb	U+fffd
+0xdc	U+fffd
+0xdd	U+fffd
+0xde	U+fffd
+0xdf	U+2017
+0xe0	U+05d0
+0xe1	U+05d1
+0xe2	U+05d2
+0xe3	U+05d3
+0xe4	U+05d4
+0xe5	U+05d5
+0xe6	U+05d6
+0xe7	U+05d7
+0xe8	U+05d8
+0xe9	U+05d9
+0xea	U+05da
+0xeb	U+05db
+0xec	U+05dc
+0xed	U+05dd
+0xee	U+05de
+0xef	U+05df
+0xf0	U+05e0
+0xf1	U+05e1
+0xf2	U+05e2
+0xf3	U+05e3
+0xf4	U+05e4
+0xf5	U+05e5
+0xf6	U+05e6
+0xf7	U+05e7
+0xf8	U+05e8
+0xf9	U+05e9
+0xfa	U+05ea
+0xfb	U+fffd
+0xfc	U+fffd
+0xfd	U+200e
+0xfe	U+200f
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/ISO_8859_9.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from ISO_8859_9.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0080
+0x81	U+0081
+0x82	U+0082
+0x83	U+0083
+0x84	U+0084
+0x85	U+0085
+0x86	U+0086
+0x87	U+0087
+0x88	U+0088
+0x89	U+0089
+0x8a	U+008a
+0x8b	U+008b
+0x8c	U+008c
+0x8d	U+008d
+0x8e	U+008e
+0x8f	U+008f
+0x90	U+0090
+0x91	U+0091
+0x92	U+0092
+0x93	U+0093
+0x94	U+0094
+0x95	U+0095
+0x96	U+0096
+0x97	U+0097
+0x98	U+0098
+0x99	U+0099
+0x9a	U+009a
+0x9b	U+009b
+0x9c	U+009c
+0x9d	U+009d
+0x9e	U+009e
+0x9f	U+009f
+0xa0	U+00a0
+0xa1	U+00a1
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+00aa
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+00b9
+0xba	U+00ba
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00bf
+0xc0	U+00c0
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+00c3
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+00c6
+0xc7	U+00c7
+0xc8	U+00c8
+0xc9	U+00c9
+0xca	U+00ca
+0xcb	U+00cb
+0xcc	U+00cc
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+00cf
+0xd0	U+011e
+0xd1	U+00d1
+0xd2	U+00d2
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+00d8
+0xd9	U+00d9
+0xda	U+00da
+0xdb	U+00db
+0xdc	U+00dc
+0xdd	U+0130
+0xde	U+015e
+0xdf	U+00df
+0xe0	U+00e0
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+00e3
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+00e6
+0xe7	U+00e7
+0xe8	U+00e8
+0xe9	U+00e9
+0xea	U+00ea
+0xeb	U+00eb
+0xec	U+00ec
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+00ef
+0xf0	U+011f
+0xf1	U+00f1
+0xf2	U+00f2
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+00f8
+0xf9	U+00f9
+0xfa	U+00fa
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+0131
+0xfe	U+015f
+0xff	U+00ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/JIS_X_0201.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from JIS_X_0201.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+fffd
+0x81	U+fffd
+0x82	U+fffd
+0x83	U+fffd
+0x84	U+fffd
+0x85	U+fffd
+0x86	U+fffd
+0x87	U+fffd
+0x88	U+fffd
+0x89	U+fffd
+0x8a	U+fffd
+0x8b	U+fffd
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+fffd
+0x92	U+fffd
+0x93	U+fffd
+0x94	U+fffd
+0x95	U+fffd
+0x96	U+fffd
+0x97	U+fffd
+0x98	U+fffd
+0x99	U+fffd
+0x9a	U+fffd
+0x9b	U+fffd
+0x9c	U+fffd
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+fffd
+0xa0	U+fffd
+0xa1	U+ff61
+0xa2	U+ff62
+0xa3	U+ff63
+0xa4	U+ff64
+0xa5	U+ff65
+0xa6	U+ff66
+0xa7	U+ff67
+0xa8	U+ff68
+0xa9	U+ff69
+0xaa	U+ff6a
+0xab	U+ff6b
+0xac	U+ff6c
+0xad	U+ff6d
+0xae	U+ff6e
+0xaf	U+ff6f
+0xb0	U+ff70
+0xb1	U+ff71
+0xb2	U+ff72
+0xb3	U+ff73
+0xb4	U+ff74
+0xb5	U+ff75
+0xb6	U+ff76
+0xb7	U+ff77
+0xb8	U+ff78
+0xb9	U+ff79
+0xba	U+ff7a
+0xbb	U+ff7b
+0xbc	U+ff7c
+0xbd	U+ff7d
+0xbe	U+ff7e
+0xbf	U+ff7f
+0xc0	U+ff80
+0xc1	U+ff81
+0xc2	U+ff82
+0xc3	U+ff83
+0xc4	U+ff84
+0xc5	U+ff85
+0xc6	U+ff86
+0xc7	U+ff87
+0xc8	U+ff88
+0xc9	U+ff89
+0xca	U+ff8a
+0xcb	U+ff8b
+0xcc	U+ff8c
+0xcd	U+ff8d
+0xce	U+ff8e
+0xcf	U+ff8f
+0xd0	U+ff90
+0xd1	U+ff91
+0xd2	U+ff92
+0xd3	U+ff93
+0xd4	U+ff94
+0xd5	U+ff95
+0xd6	U+ff96
+0xd7	U+ff97
+0xd8	U+ff98
+0xd9	U+ff99
+0xda	U+ff9a
+0xdb	U+ff9b
+0xdc	U+ff9c
+0xdd	U+ff9d
+0xde	U+ff9e
+0xdf	U+ff9f
+0xe0	U+fffd
+0xe1	U+fffd
+0xe2	U+fffd
+0xe3	U+fffd
+0xe4	U+fffd
+0xe5	U+fffd
+0xe6	U+fffd
+0xe7	U+fffd
+0xe8	U+fffd
+0xe9	U+fffd
+0xea	U+fffd
+0xeb	U+fffd
+0xec	U+fffd
+0xed	U+fffd
+0xee	U+fffd
+0xef	U+fffd
+0xf0	U+fffd
+0xf1	U+fffd
+0xf2	U+fffd
+0xf3	U+fffd
+0xf4	U+fffd
+0xf5	U+fffd
+0xf6	U+fffd
+0xf7	U+fffd
+0xf8	U+fffd
+0xf9	U+fffd
+0xfa	U+fffd
+0xfb	U+fffd
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/KOI8_R.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from KOI8_R.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+2500
+0x81	U+2502
+0x82	U+250c
+0x83	U+2510
+0x84	U+2514
+0x85	U+2518
+0x86	U+251c
+0x87	U+2524
+0x88	U+252c
+0x89	U+2534
+0x8a	U+253c
+0x8b	U+2580
+0x8c	U+2584
+0x8d	U+2588
+0x8e	U+258c
+0x8f	U+2590
+0x90	U+2591
+0x91	U+2592
+0x92	U+2593
+0x93	U+2320
+0x94	U+25a0
+0x95	U+2219
+0x96	U+221a
+0x97	U+2248
+0x98	U+2264
+0x99	U+2265
+0x9a	U+00a0
+0x9b	U+2321
+0x9c	U+00b0
+0x9d	U+00b2
+0x9e	U+00b7
+0x9f	U+00f7
+0xa0	U+2550
+0xa1	U+2551
+0xa2	U+2552
+0xa3	U+0451
+0xa4	U+2553
+0xa5	U+2554
+0xa6	U+2555
+0xa7	U+2556
+0xa8	U+2557
+0xa9	U+2558
+0xaa	U+2559
+0xab	U+255a
+0xac	U+255b
+0xad	U+255c
+0xae	U+255d
+0xaf	U+255e
+0xb0	U+255f
+0xb1	U+2560
+0xb2	U+2561
+0xb3	U+0401
+0xb4	U+2562
+0xb5	U+2563
+0xb6	U+2564
+0xb7	U+2565
+0xb8	U+2566
+0xb9	U+2567
+0xba	U+2568
+0xbb	U+2569
+0xbc	U+256a
+0xbd	U+256b
+0xbe	U+256c
+0xbf	U+00a9
+0xc0	U+044e
+0xc1	U+0430
+0xc2	U+0431
+0xc3	U+0446
+0xc4	U+0434
+0xc5	U+0435
+0xc6	U+0444
+0xc7	U+0433
+0xc8	U+0445
+0xc9	U+0438
+0xca	U+0439
+0xcb	U+043a
+0xcc	U+043b
+0xcd	U+043c
+0xce	U+043d
+0xcf	U+043e
+0xd0	U+043f
+0xd1	U+044f
+0xd2	U+0440
+0xd3	U+0441
+0xd4	U+0442
+0xd5	U+0443
+0xd6	U+0436
+0xd7	U+0432
+0xd8	U+044c
+0xd9	U+044b
+0xda	U+0437
+0xdb	U+0448
+0xdc	U+044d
+0xdd	U+0449
+0xde	U+0447
+0xdf	U+044a
+0xe0	U+042e
+0xe1	U+0410
+0xe2	U+0411
+0xe3	U+0426
+0xe4	U+0414
+0xe5	U+0415
+0xe6	U+0424
+0xe7	U+0413
+0xe8	U+0425
+0xe9	U+0418
+0xea	U+0419
+0xeb	U+041a
+0xec	U+041b
+0xed	U+041c
+0xee	U+041d
+0xef	U+041e
+0xf0	U+041f
+0xf1	U+042f
+0xf2	U+0420
+0xf3	U+0421
+0xf4	U+0422
+0xf5	U+0423
+0xf6	U+0416
+0xf7	U+0412
+0xf8	U+042c
+0xf9	U+042b
+0xfa	U+0417
+0xfb	U+0428
+0xfc	U+042d
+0xfd	U+0429
+0xfe	U+0427
+0xff	U+042a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/KOI8_U.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from KOI8_U.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+2500
+0x81	U+2502
+0x82	U+250c
+0x83	U+2510
+0x84	U+2514
+0x85	U+2518
+0x86	U+251c
+0x87	U+2524
+0x88	U+252c
+0x89	U+2534
+0x8a	U+253c
+0x8b	U+2580
+0x8c	U+2584
+0x8d	U+2588
+0x8e	U+258c
+0x8f	U+2590
+0x90	U+2591
+0x91	U+2592
+0x92	U+2593
+0x93	U+2320
+0x94	U+25a0
+0x95	U+2219
+0x96	U+221a
+0x97	U+2248
+0x98	U+2264
+0x99	U+2265
+0x9a	U+00a0
+0x9b	U+2321
+0x9c	U+00b0
+0x9d	U+00b2
+0x9e	U+00b7
+0x9f	U+00f7
+0xa0	U+2550
+0xa1	U+2551
+0xa2	U+2552
+0xa3	U+0451
+0xa4	U+0454
+0xa5	U+2554
+0xa6	U+0456
+0xa7	U+0457
+0xa8	U+2557
+0xa9	U+2558
+0xaa	U+2559
+0xab	U+255a
+0xac	U+255b
+0xad	U+0491
+0xae	U+255d
+0xaf	U+255e
+0xb0	U+255f
+0xb1	U+2560
+0xb2	U+2561
+0xb3	U+0401
+0xb4	U+0404
+0xb5	U+2563
+0xb6	U+0406
+0xb7	U+0407
+0xb8	U+2566
+0xb9	U+2567
+0xba	U+2568
+0xbb	U+2569
+0xbc	U+256a
+0xbd	U+0490
+0xbe	U+256c
+0xbf	U+00a9
+0xc0	U+044e
+0xc1	U+0430
+0xc2	U+0431
+0xc3	U+0446
+0xc4	U+0434
+0xc5	U+0435
+0xc6	U+0444
+0xc7	U+0433
+0xc8	U+0445
+0xc9	U+0438
+0xca	U+0439
+0xcb	U+043a
+0xcc	U+043b
+0xcd	U+043c
+0xce	U+043d
+0xcf	U+043e
+0xd0	U+043f
+0xd1	U+044f
+0xd2	U+0440
+0xd3	U+0441
+0xd4	U+0442
+0xd5	U+0443
+0xd6	U+0436
+0xd7	U+0432
+0xd8	U+044c
+0xd9	U+044b
+0xda	U+0437
+0xdb	U+0448
+0xdc	U+044d
+0xdd	U+0449
+0xde	U+0447
+0xdf	U+044a
+0xe0	U+042e
+0xe1	U+0410
+0xe2	U+0411
+0xe3	U+0426
+0xe4	U+0414
+0xe5	U+0415
+0xe6	U+0424
+0xe7	U+0413
+0xe8	U+0425
+0xe9	U+0418
+0xea	U+0419
+0xeb	U+041a
+0xec	U+041b
+0xed	U+041c
+0xee	U+041d
+0xef	U+041e
+0xf0	U+041f
+0xf1	U+042f
+0xf2	U+0420
+0xf3	U+0421
+0xf4	U+0422
+0xf5	U+0423
+0xf6	U+0416
+0xf7	U+0412
+0xf8	U+042c
+0xf9	U+042b
+0xfa	U+0417
+0xfb	U+0428
+0xfc	U+042d
+0xfd	U+0429
+0xfe	U+0427
+0xff	U+042a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1250.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1250.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+201a
+0x83	U+fffd
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+fffd
+0x89	U+2030
+0x8a	U+0160
+0x8b	U+2039
+0x8c	U+015a
+0x8d	U+0164
+0x8e	U+017d
+0x8f	U+0179
+0x90	U+fffd
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+fffd
+0x99	U+2122
+0x9a	U+0161
+0x9b	U+203a
+0x9c	U+015b
+0x9d	U+0165
+0x9e	U+017e
+0x9f	U+017a
+0xa0	U+00a0
+0xa1	U+02c7
+0xa2	U+02d8
+0xa3	U+0141
+0xa4	U+00a4
+0xa5	U+0104
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+015e
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+017b
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+02db
+0xb3	U+0142
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+0105
+0xba	U+015f
+0xbb	U+00bb
+0xbc	U+013d
+0xbd	U+02dd
+0xbe	U+013e
+0xbf	U+017c
+0xc0	U+0154
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+0102
+0xc4	U+00c4
+0xc5	U+0139
+0xc6	U+0106
+0xc7	U+00c7
+0xc8	U+010c
+0xc9	U+00c9
+0xca	U+0118
+0xcb	U+00cb
+0xcc	U+011a
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+010e
+0xd0	U+0110
+0xd1	U+0143
+0xd2	U+0147
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+0150
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+0158
+0xd9	U+016e
+0xda	U+00da
+0xdb	U+0170
+0xdc	U+00dc
+0xdd	U+00dd
+0xde	U+0162
+0xdf	U+00df
+0xe0	U+0155
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+0103
+0xe4	U+00e4
+0xe5	U+013a
+0xe6	U+0107
+0xe7	U+00e7
+0xe8	U+010d
+0xe9	U+00e9
+0xea	U+0119
+0xeb	U+00eb
+0xec	U+011b
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+010f
+0xf0	U+0111
+0xf1	U+0144
+0xf2	U+0148
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+0151
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+0159
+0xf9	U+016f
+0xfa	U+00fa
+0xfb	U+0171
+0xfc	U+00fc
+0xfd	U+00fd
+0xfe	U+0163
+0xff	U+02d9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1251.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1251.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0402
+0x81	U+0403
+0x82	U+201a
+0x83	U+0453
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+20ac
+0x89	U+2030
+0x8a	U+0409
+0x8b	U+2039
+0x8c	U+040a
+0x8d	U+040c
+0x8e	U+040b
+0x8f	U+040f
+0x90	U+0452
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+fffd
+0x99	U+2122
+0x9a	U+0459
+0x9b	U+203a
+0x9c	U+045a
+0x9d	U+045c
+0x9e	U+045b
+0x9f	U+045f
+0xa0	U+00a0
+0xa1	U+040e
+0xa2	U+045e
+0xa3	U+0408
+0xa4	U+00a4
+0xa5	U+0490
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+0401
+0xa9	U+00a9
+0xaa	U+0404
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+0407
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+0406
+0xb3	U+0456
+0xb4	U+0491
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+0451
+0xb9	U+2116
+0xba	U+0454
+0xbb	U+00bb
+0xbc	U+0458
+0xbd	U+0405
+0xbe	U+0455
+0xbf	U+0457
+0xc0	U+0410
+0xc1	U+0411
+0xc2	U+0412
+0xc3	U+0413
+0xc4	U+0414
+0xc5	U+0415
+0xc6	U+0416
+0xc7	U+0417
+0xc8	U+0418
+0xc9	U+0419
+0xca	U+041a
+0xcb	U+041b
+0xcc	U+041c
+0xcd	U+041d
+0xce	U+041e
+0xcf	U+041f
+0xd0	U+0420
+0xd1	U+0421
+0xd2	U+0422
+0xd3	U+0423
+0xd4	U+0424
+0xd5	U+0425
+0xd6	U+0426
+0xd7	U+0427
+0xd8	U+0428
+0xd9	U+0429
+0xda	U+042a
+0xdb	U+042b
+0xdc	U+042c
+0xdd	U+042d
+0xde	U+042e
+0xdf	U+042f
+0xe0	U+0430
+0xe1	U+0431
+0xe2	U+0432
+0xe3	U+0433
+0xe4	U+0434
+0xe5	U+0435
+0xe6	U+0436
+0xe7	U+0437
+0xe8	U+0438
+0xe9	U+0439
+0xea	U+043a
+0xeb	U+043b
+0xec	U+043c
+0xed	U+043d
+0xee	U+043e
+0xef	U+043f
+0xf0	U+0440
+0xf1	U+0441
+0xf2	U+0442
+0xf3	U+0443
+0xf4	U+0444
+0xf5	U+0445
+0xf6	U+0446
+0xf7	U+0447
+0xf8	U+0448
+0xf9	U+0449
+0xfa	U+044a
+0xfb	U+044b
+0xfc	U+044c
+0xfd	U+044d
+0xfe	U+044e
+0xff	U+044f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1252.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1252.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+201a
+0x83	U+0192
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+02c6
+0x89	U+2030
+0x8a	U+0160
+0x8b	U+2039
+0x8c	U+0152
+0x8d	U+fffd
+0x8e	U+017d
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+02dc
+0x99	U+2122
+0x9a	U+0161
+0x9b	U+203a
+0x9c	U+0153
+0x9d	U+fffd
+0x9e	U+017e
+0x9f	U+0178
+0xa0	U+00a0
+0xa1	U+00a1
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+00aa
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+00b9
+0xba	U+00ba
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00bf
+0xc0	U+00c0
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+00c3
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+00c6
+0xc7	U+00c7
+0xc8	U+00c8
+0xc9	U+00c9
+0xca	U+00ca
+0xcb	U+00cb
+0xcc	U+00cc
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+00cf
+0xd0	U+00d0
+0xd1	U+00d1
+0xd2	U+00d2
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+00d8
+0xd9	U+00d9
+0xda	U+00da
+0xdb	U+00db
+0xdc	U+00dc
+0xdd	U+00dd
+0xde	U+00de
+0xdf	U+00df
+0xe0	U+00e0
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+00e3
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+00e6
+0xe7	U+00e7
+0xe8	U+00e8
+0xe9	U+00e9
+0xea	U+00ea
+0xeb	U+00eb
+0xec	U+00ec
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+00ef
+0xf0	U+00f0
+0xf1	U+00f1
+0xf2	U+00f2
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+00f8
+0xf9	U+00f9
+0xfa	U+00fa
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+00fd
+0xfe	U+00fe
+0xff	U+00ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1253.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1253.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+201a
+0x83	U+0192
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+fffd
+0x89	U+2030
+0x8a	U+fffd
+0x8b	U+2039
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+fffd
+0x99	U+2122
+0x9a	U+fffd
+0x9b	U+203a
+0x9c	U+fffd
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+fffd
+0xa0	U+00a0
+0xa1	U+0385
+0xa2	U+0386
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+fffd
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+2015
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+0384
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+0388
+0xb9	U+0389
+0xba	U+038a
+0xbb	U+00bb
+0xbc	U+038c
+0xbd	U+00bd
+0xbe	U+038e
+0xbf	U+038f
+0xc0	U+0390
+0xc1	U+0391
+0xc2	U+0392
+0xc3	U+0393
+0xc4	U+0394
+0xc5	U+0395
+0xc6	U+0396
+0xc7	U+0397
+0xc8	U+0398
+0xc9	U+0399
+0xca	U+039a
+0xcb	U+039b
+0xcc	U+039c
+0xcd	U+039d
+0xce	U+039e
+0xcf	U+039f
+0xd0	U+03a0
+0xd1	U+03a1
+0xd2	U+fffd
+0xd3	U+03a3
+0xd4	U+03a4
+0xd5	U+03a5
+0xd6	U+03a6
+0xd7	U+03a7
+0xd8	U+03a8
+0xd9	U+03a9
+0xda	U+03aa
+0xdb	U+03ab
+0xdc	U+03ac
+0xdd	U+03ad
+0xde	U+03ae
+0xdf	U+03af
+0xe0	U+03b0
+0xe1	U+03b1
+0xe2	U+03b2
+0xe3	U+03b3
+0xe4	U+03b4
+0xe5	U+03b5
+0xe6	U+03b6
+0xe7	U+03b7
+0xe8	U+03b8
+0xe9	U+03b9
+0xea	U+03ba
+0xeb	U+03bb
+0xec	U+03bc
+0xed	U+03bd
+0xee	U+03be
+0xef	U+03bf
+0xf0	U+03c0
+0xf1	U+03c1
+0xf2	U+03c2
+0xf3	U+03c3
+0xf4	U+03c4
+0xf5	U+03c5
+0xf6	U+03c6
+0xf7	U+03c7
+0xf8	U+03c8
+0xf9	U+03c9
+0xfa	U+03ca
+0xfb	U+03cb
+0xfc	U+03cc
+0xfd	U+03cd
+0xfe	U+03ce
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1254.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1254.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+201a
+0x83	U+0192
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+02c6
+0x89	U+2030
+0x8a	U+0160
+0x8b	U+2039
+0x8c	U+0152
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+02dc
+0x99	U+2122
+0x9a	U+0161
+0x9b	U+203a
+0x9c	U+0153
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+0178
+0xa0	U+00a0
+0xa1	U+00a1
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+00aa
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+00b9
+0xba	U+00ba
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00bf
+0xc0	U+00c0
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+00c3
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+00c6
+0xc7	U+00c7
+0xc8	U+00c8
+0xc9	U+00c9
+0xca	U+00ca
+0xcb	U+00cb
+0xcc	U+00cc
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+00cf
+0xd0	U+011e
+0xd1	U+00d1
+0xd2	U+00d2
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+00d8
+0xd9	U+00d9
+0xda	U+00da
+0xdb	U+00db
+0xdc	U+00dc
+0xdd	U+0130
+0xde	U+015e
+0xdf	U+00df
+0xe0	U+00e0
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+00e3
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+00e6
+0xe7	U+00e7
+0xe8	U+00e8
+0xe9	U+00e9
+0xea	U+00ea
+0xeb	U+00eb
+0xec	U+00ec
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+00ef
+0xf0	U+011f
+0xf1	U+00f1
+0xf2	U+00f2
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+00f8
+0xf9	U+00f9
+0xfa	U+00fa
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+0131
+0xfe	U+015f
+0xff	U+00ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1255.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1255.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+201a
+0x83	U+0192
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+02c6
+0x89	U+2030
+0x8a	U+fffd
+0x8b	U+2039
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+02dc
+0x99	U+2122
+0x9a	U+fffd
+0x9b	U+203a
+0x9c	U+fffd
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+fffd
+0xa0	U+00a0
+0xa1	U+00a1
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+20aa
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+00d7
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+00b9
+0xba	U+00f7
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00bf
+0xc0	U+05b0
+0xc1	U+05b1
+0xc2	U+05b2
+0xc3	U+05b3
+0xc4	U+05b4
+0xc5	U+05b5
+0xc6	U+05b6
+0xc7	U+05b7
+0xc8	U+05b8
+0xc9	U+05b9
+0xca	U+fffd
+0xcb	U+05bb
+0xcc	U+05bc
+0xcd	U+05bd
+0xce	U+05be
+0xcf	U+05bf
+0xd0	U+05c0
+0xd1	U+05c1
+0xd2	U+05c2
+0xd3	U+05c3
+0xd4	U+05f0
+0xd5	U+05f1
+0xd6	U+05f2
+0xd7	U+05f3
+0xd8	U+05f4
+0xd9	U+fffd
+0xda	U+fffd
+0xdb	U+fffd
+0xdc	U+fffd
+0xdd	U+fffd
+0xde	U+fffd
+0xdf	U+fffd
+0xe0	U+05d0
+0xe1	U+05d1
+0xe2	U+05d2
+0xe3	U+05d3
+0xe4	U+05d4
+0xe5	U+05d5
+0xe6	U+05d6
+0xe7	U+05d7
+0xe8	U+05d8
+0xe9	U+05d9
+0xea	U+05da
+0xeb	U+05db
+0xec	U+05dc
+0xed	U+05dd
+0xee	U+05de
+0xef	U+05df
+0xf0	U+05e0
+0xf1	U+05e1
+0xf2	U+05e2
+0xf3	U+05e3
+0xf4	U+05e4
+0xf5	U+05e5
+0xf6	U+05e6
+0xf7	U+05e7
+0xf8	U+05e8
+0xf9	U+05e9
+0xfa	U+05ea
+0xfb	U+fffd
+0xfc	U+fffd
+0xfd	U+200e
+0xfe	U+200f
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1256.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1256.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+067e
+0x82	U+201a
+0x83	U+0192
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+02c6
+0x89	U+2030
+0x8a	U+0679
+0x8b	U+2039
+0x8c	U+0152
+0x8d	U+0686
+0x8e	U+0698
+0x8f	U+0688
+0x90	U+06af
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+06a9
+0x99	U+2122
+0x9a	U+0691
+0x9b	U+203a
+0x9c	U+0153
+0x9d	U+200c
+0x9e	U+200d
+0x9f	U+06ba
+0xa0	U+00a0
+0xa1	U+060c
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+06be
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+00b9
+0xba	U+061b
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+061f
+0xc0	U+06c1
+0xc1	U+0621
+0xc2	U+0622
+0xc3	U+0623
+0xc4	U+0624
+0xc5	U+0625
+0xc6	U+0626
+0xc7	U+0627
+0xc8	U+0628
+0xc9	U+0629
+0xca	U+062a
+0xcb	U+062b
+0xcc	U+062c
+0xcd	U+062d
+0xce	U+062e
+0xcf	U+062f
+0xd0	U+0630
+0xd1	U+0631
+0xd2	U+0632
+0xd3	U+0633
+0xd4	U+0634
+0xd5	U+0635
+0xd6	U+0636
+0xd7	U+00d7
+0xd8	U+0637
+0xd9	U+0638
+0xda	U+0639
+0xdb	U+063a
+0xdc	U+0640
+0xdd	U+0641
+0xde	U+0642
+0xdf	U+0643
+0xe0	U+00e0
+0xe1	U+0644
+0xe2	U+00e2
+0xe3	U+0645
+0xe4	U+0646
+0xe5	U+0647
+0xe6	U+0648
+0xe7	U+00e7
+0xe8	U+00e8
+0xe9	U+00e9
+0xea	U+00ea
+0xeb	U+00eb
+0xec	U+0649
+0xed	U+064a
+0xee	U+00ee
+0xef	U+00ef
+0xf0	U+064b
+0xf1	U+064c
+0xf2	U+064d
+0xf3	U+064e
+0xf4	U+00f4
+0xf5	U+064f
+0xf6	U+0650
+0xf7	U+00f7
+0xf8	U+0651
+0xf9	U+00f9
+0xfa	U+0652
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+200e
+0xfe	U+200f
+0xff	U+06d2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1257.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1257.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+201a
+0x83	U+fffd
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+fffd
+0x89	U+2030
+0x8a	U+fffd
+0x8b	U+2039
+0x8c	U+fffd
+0x8d	U+00a8
+0x8e	U+02c7
+0x8f	U+00b8
+0x90	U+fffd
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+fffd
+0x99	U+2122
+0x9a	U+fffd
+0x9b	U+203a
+0x9c	U+fffd
+0x9d	U+00af
+0x9e	U+02db
+0x9f	U+fffd
+0xa0	U+00a0
+0xa1	U+fffd
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+fffd
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00d8
+0xa9	U+00a9
+0xaa	U+0156
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00c6
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00f8
+0xb9	U+00b9
+0xba	U+0157
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00e6
+0xc0	U+0104
+0xc1	U+012e
+0xc2	U+0100
+0xc3	U+0106
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+0118
+0xc7	U+0112
+0xc8	U+010c
+0xc9	U+00c9
+0xca	U+0179
+0xcb	U+0116
+0xcc	U+0122
+0xcd	U+0136
+0xce	U+012a
+0xcf	U+013b
+0xd0	U+0160
+0xd1	U+0143
+0xd2	U+0145
+0xd3	U+00d3
+0xd4	U+014c
+0xd5	U+00d5
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+0172
+0xd9	U+0141
+0xda	U+015a
+0xdb	U+016a
+0xdc	U+00dc
+0xdd	U+017b
+0xde	U+017d
+0xdf	U+00df
+0xe0	U+0105
+0xe1	U+012f
+0xe2	U+0101
+0xe3	U+0107
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+0119
+0xe7	U+0113
+0xe8	U+010d
+0xe9	U+00e9
+0xea	U+017a
+0xeb	U+0117
+0xec	U+0123
+0xed	U+0137
+0xee	U+012b
+0xef	U+013c
+0xf0	U+0161
+0xf1	U+0144
+0xf2	U+0146
+0xf3	U+00f3
+0xf4	U+014d
+0xf5	U+00f5
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+0173
+0xf9	U+0142
+0xfa	U+015b
+0xfb	U+016b
+0xfc	U+00fc
+0xfd	U+017c
+0xfe	U+017e
+0xff	U+02d9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS1258.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS1258.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+201a
+0x83	U+0192
+0x84	U+201e
+0x85	U+2026
+0x86	U+2020
+0x87	U+2021
+0x88	U+02c6
+0x89	U+2030
+0x8a	U+fffd
+0x8b	U+2039
+0x8c	U+0152
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+02dc
+0x99	U+2122
+0x9a	U+fffd
+0x9b	U+203a
+0x9c	U+0153
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+0178
+0xa0	U+00a0
+0xa1	U+00a1
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a4
+0xa5	U+00a5
+0xa6	U+00a6
+0xa7	U+00a7
+0xa8	U+00a8
+0xa9	U+00a9
+0xaa	U+00aa
+0xab	U+00ab
+0xac	U+00ac
+0xad	U+00ad
+0xae	U+00ae
+0xaf	U+00af
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+00b2
+0xb3	U+00b3
+0xb4	U+00b4
+0xb5	U+00b5
+0xb6	U+00b6
+0xb7	U+00b7
+0xb8	U+00b8
+0xb9	U+00b9
+0xba	U+00ba
+0xbb	U+00bb
+0xbc	U+00bc
+0xbd	U+00bd
+0xbe	U+00be
+0xbf	U+00bf
+0xc0	U+00c0
+0xc1	U+00c1
+0xc2	U+00c2
+0xc3	U+0102
+0xc4	U+00c4
+0xc5	U+00c5
+0xc6	U+00c6
+0xc7	U+00c7
+0xc8	U+00c8
+0xc9	U+00c9
+0xca	U+00ca
+0xcb	U+00cb
+0xcc	U+0300
+0xcd	U+00cd
+0xce	U+00ce
+0xcf	U+00cf
+0xd0	U+0110
+0xd1	U+00d1
+0xd2	U+0309
+0xd3	U+00d3
+0xd4	U+00d4
+0xd5	U+01a0
+0xd6	U+00d6
+0xd7	U+00d7
+0xd8	U+00d8
+0xd9	U+00d9
+0xda	U+00da
+0xdb	U+00db
+0xdc	U+00dc
+0xdd	U+01af
+0xde	U+0303
+0xdf	U+00df
+0xe0	U+00e0
+0xe1	U+00e1
+0xe2	U+00e2
+0xe3	U+0103
+0xe4	U+00e4
+0xe5	U+00e5
+0xe6	U+00e6
+0xe7	U+00e7
+0xe8	U+00e8
+0xe9	U+00e9
+0xea	U+00ea
+0xeb	U+00eb
+0xec	U+0301
+0xed	U+00ed
+0xee	U+00ee
+0xef	U+00ef
+0xf0	U+0111
+0xf1	U+00f1
+0xf2	U+0323
+0xf3	U+00f3
+0xf4	U+00f4
+0xf5	U+01a1
+0xf6	U+00f6
+0xf7	U+00f7
+0xf8	U+00f8
+0xf9	U+00f9
+0xfa	U+00fa
+0xfb	U+00fb
+0xfc	U+00fc
+0xfd	U+01b0
+0xfe	U+20ab
+0xff	U+00ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MS874.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MS874.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+20ac
+0x81	U+fffd
+0x82	U+fffd
+0x83	U+fffd
+0x84	U+fffd
+0x85	U+2026
+0x86	U+fffd
+0x87	U+fffd
+0x88	U+fffd
+0x89	U+fffd
+0x8a	U+fffd
+0x8b	U+fffd
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+2018
+0x92	U+2019
+0x93	U+201c
+0x94	U+201d
+0x95	U+2022
+0x96	U+2013
+0x97	U+2014
+0x98	U+fffd
+0x99	U+fffd
+0x9a	U+fffd
+0x9b	U+fffd
+0x9c	U+fffd
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+fffd
+0xa0	U+00a0
+0xa1	U+0e01
+0xa2	U+0e02
+0xa3	U+0e03
+0xa4	U+0e04
+0xa5	U+0e05
+0xa6	U+0e06
+0xa7	U+0e07
+0xa8	U+0e08
+0xa9	U+0e09
+0xaa	U+0e0a
+0xab	U+0e0b
+0xac	U+0e0c
+0xad	U+0e0d
+0xae	U+0e0e
+0xaf	U+0e0f
+0xb0	U+0e10
+0xb1	U+0e11
+0xb2	U+0e12
+0xb3	U+0e13
+0xb4	U+0e14
+0xb5	U+0e15
+0xb6	U+0e16
+0xb7	U+0e17
+0xb8	U+0e18
+0xb9	U+0e19
+0xba	U+0e1a
+0xbb	U+0e1b
+0xbc	U+0e1c
+0xbd	U+0e1d
+0xbe	U+0e1e
+0xbf	U+0e1f
+0xc0	U+0e20
+0xc1	U+0e21
+0xc2	U+0e22
+0xc3	U+0e23
+0xc4	U+0e24
+0xc5	U+0e25
+0xc6	U+0e26
+0xc7	U+0e27
+0xc8	U+0e28
+0xc9	U+0e29
+0xca	U+0e2a
+0xcb	U+0e2b
+0xcc	U+0e2c
+0xcd	U+0e2d
+0xce	U+0e2e
+0xcf	U+0e2f
+0xd0	U+0e30
+0xd1	U+0e31
+0xd2	U+0e32
+0xd3	U+0e33
+0xd4	U+0e34
+0xd5	U+0e35
+0xd6	U+0e36
+0xd7	U+0e37
+0xd8	U+0e38
+0xd9	U+0e39
+0xda	U+0e3a
+0xdb	U+fffd
+0xdc	U+fffd
+0xdd	U+fffd
+0xde	U+fffd
+0xdf	U+0e3f
+0xe0	U+0e40
+0xe1	U+0e41
+0xe2	U+0e42
+0xe3	U+0e43
+0xe4	U+0e44
+0xe5	U+0e45
+0xe6	U+0e46
+0xe7	U+0e47
+0xe8	U+0e48
+0xe9	U+0e49
+0xea	U+0e4a
+0xeb	U+0e4b
+0xec	U+0e4c
+0xed	U+0e4d
+0xee	U+0e4e
+0xef	U+0e4f
+0xf0	U+0e50
+0xf1	U+0e51
+0xf2	U+0e52
+0xf3	U+0e53
+0xf4	U+0e54
+0xf5	U+0e55
+0xf6	U+0e56
+0xf7	U+0e57
+0xf8	U+0e58
+0xf9	U+0e59
+0xfa	U+0e5a
+0xfb	U+0e5b
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacArabic.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacArabic.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+00a0
+0x82	U+00c7
+0x83	U+00c9
+0x84	U+00d1
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+00e1
+0x88	U+00e0
+0x89	U+00e2
+0x8a	U+00e4
+0x8b	U+06ba
+0x8c	U+00ab
+0x8d	U+00e7
+0x8e	U+00e9
+0x8f	U+00e8
+0x90	U+00ea
+0x91	U+00eb
+0x92	U+00ed
+0x93	U+2026
+0x94	U+00ee
+0x95	U+00ef
+0x96	U+00f1
+0x97	U+00f3
+0x98	U+00bb
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00f7
+0x9c	U+00fa
+0x9d	U+00f9
+0x9e	U+00fb
+0x9f	U+00fc
+0xa0	U+fffd
+0xa1	U+fffd
+0xa2	U+fffd
+0xa3	U+fffd
+0xa4	U+fffd
+0xa5	U+066a
+0xa6	U+fffd
+0xa7	U+fffd
+0xa8	U+fffd
+0xa9	U+fffd
+0xaa	U+fffd
+0xab	U+fffd
+0xac	U+060c
+0xad	U+fffd
+0xae	U+fffd
+0xaf	U+fffd
+0xb0	U+0660
+0xb1	U+0661
+0xb2	U+0662
+0xb3	U+0663
+0xb4	U+0664
+0xb5	U+0665
+0xb6	U+0666
+0xb7	U+0667
+0xb8	U+0668
+0xb9	U+0669
+0xba	U+fffd
+0xbb	U+061b
+0xbc	U+fffd
+0xbd	U+fffd
+0xbe	U+fffd
+0xbf	U+061f
+0xc0	U+066d
+0xc1	U+0621
+0xc2	U+0622
+0xc3	U+0623
+0xc4	U+0624
+0xc5	U+0625
+0xc6	U+0626
+0xc7	U+0627
+0xc8	U+0628
+0xc9	U+0629
+0xca	U+062a
+0xcb	U+062b
+0xcc	U+062c
+0xcd	U+062d
+0xce	U+062e
+0xcf	U+062f
+0xd0	U+0630
+0xd1	U+0631
+0xd2	U+0632
+0xd3	U+0633
+0xd4	U+0634
+0xd5	U+0635
+0xd6	U+0636
+0xd7	U+0637
+0xd8	U+0638
+0xd9	U+0639
+0xda	U+063a
+0xdb	U+fffd
+0xdc	U+fffd
+0xdd	U+fffd
+0xde	U+fffd
+0xdf	U+fffd
+0xe0	U+0640
+0xe1	U+0641
+0xe2	U+0642
+0xe3	U+0643
+0xe4	U+0644
+0xe5	U+0645
+0xe6	U+0646
+0xe7	U+0647
+0xe8	U+0648
+0xe9	U+0649
+0xea	U+064a
+0xeb	U+064b
+0xec	U+064c
+0xed	U+064d
+0xee	U+064e
+0xef	U+064f
+0xf0	U+0650
+0xf1	U+0651
+0xf2	U+0652
+0xf3	U+067e
+0xf4	U+0679
+0xf5	U+0686
+0xf6	U+06d5
+0xf7	U+06a4
+0xf8	U+06af
+0xf9	U+0688
+0xfa	U+0691
+0xfb	U+fffd
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+0698
+0xff	U+06d2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacCentralEurope.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacCentralEurope.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+0100
+0x82	U+0101
+0x83	U+00c9
+0x84	U+0104
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+00e1
+0x88	U+0105
+0x89	U+010c
+0x8a	U+00e4
+0x8b	U+010d
+0x8c	U+0106
+0x8d	U+0107
+0x8e	U+00e9
+0x8f	U+0179
+0x90	U+017a
+0x91	U+010e
+0x92	U+00ed
+0x93	U+010f
+0x94	U+0112
+0x95	U+0113
+0x96	U+0116
+0x97	U+00f3
+0x98	U+0117
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00f5
+0x9c	U+00fa
+0x9d	U+011a
+0x9e	U+011b
+0x9f	U+00fc
+0xa0	U+2020
+0xa1	U+00b0
+0xa2	U+0118
+0xa3	U+00a3
+0xa4	U+00a7
+0xa5	U+2022
+0xa6	U+00b6
+0xa7	U+00df
+0xa8	U+00ae
+0xa9	U+00a9
+0xaa	U+2122
+0xab	U+0119
+0xac	U+00a8
+0xad	U+2260
+0xae	U+0123
+0xaf	U+012e
+0xb0	U+012f
+0xb1	U+012a
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+012b
+0xb5	U+0136
+0xb6	U+2202
+0xb7	U+2211
+0xb8	U+0142
+0xb9	U+013b
+0xba	U+013c
+0xbb	U+013d
+0xbc	U+013e
+0xbd	U+0139
+0xbe	U+013a
+0xbf	U+0145
+0xc0	U+0146
+0xc1	U+0143
+0xc2	U+00ac
+0xc3	U+221a
+0xc4	U+0144
+0xc5	U+0147
+0xc6	U+2206
+0xc7	U+00ab
+0xc8	U+00bb
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+0148
+0xcc	U+0150
+0xcd	U+00d5
+0xce	U+0151
+0xcf	U+014c
+0xd0	U+2013
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+25ca
+0xd8	U+014d
+0xd9	U+0154
+0xda	U+0155
+0xdb	U+0158
+0xdc	U+2039
+0xdd	U+203a
+0xde	U+0159
+0xdf	U+0156
+0xe0	U+0157
+0xe1	U+0160
+0xe2	U+201a
+0xe3	U+201e
+0xe4	U+0161
+0xe5	U+015a
+0xe6	U+015b
+0xe7	U+00c1
+0xe8	U+0164
+0xe9	U+0165
+0xea	U+00cd
+0xeb	U+017d
+0xec	U+017e
+0xed	U+016a
+0xee	U+00d3
+0xef	U+00d4
+0xf0	U+016b
+0xf1	U+016e
+0xf2	U+00da
+0xf3	U+016f
+0xf4	U+0170
+0xf5	U+0171
+0xf6	U+0172
+0xf7	U+0173
+0xf8	U+00dd
+0xf9	U+00fd
+0xfa	U+0137
+0xfb	U+017b
+0xfc	U+0141
+0xfd	U+017c
+0xfe	U+0122
+0xff	U+02c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacCroatian.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacCroatian.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+00c5
+0x82	U+00c7
+0x83	U+00c9
+0x84	U+00d1
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+00e1
+0x88	U+00e0
+0x89	U+00e2
+0x8a	U+00e4
+0x8b	U+00e3
+0x8c	U+00e5
+0x8d	U+00e7
+0x8e	U+00e9
+0x8f	U+00e8
+0x90	U+00ea
+0x91	U+00eb
+0x92	U+00ed
+0x93	U+00ec
+0x94	U+00ee
+0x95	U+00ef
+0x96	U+00f1
+0x97	U+00f3
+0x98	U+00f2
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00f5
+0x9c	U+00fa
+0x9d	U+00f9
+0x9e	U+00fb
+0x9f	U+00fc
+0xa0	U+2020
+0xa1	U+00b0
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a7
+0xa5	U+2022
+0xa6	U+00b6
+0xa7	U+00df
+0xa8	U+00ae
+0xa9	U+0160
+0xaa	U+2122
+0xab	U+00b4
+0xac	U+00a8
+0xad	U+2260
+0xae	U+017d
+0xaf	U+00d8
+0xb0	U+221e
+0xb1	U+00b1
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+2206
+0xb5	U+00b5
+0xb6	U+2202
+0xb7	U+2211
+0xb8	U+220f
+0xb9	U+0161
+0xba	U+222b
+0xbb	U+00aa
+0xbc	U+00ba
+0xbd	U+2126
+0xbe	U+017e
+0xbf	U+00f8
+0xc0	U+00bf
+0xc1	U+00a1
+0xc2	U+00ac
+0xc3	U+221a
+0xc4	U+0192
+0xc5	U+2248
+0xc6	U+0106
+0xc7	U+00ab
+0xc8	U+010c
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+00c0
+0xcc	U+00c3
+0xcd	U+00d5
+0xce	U+0152
+0xcf	U+0153
+0xd0	U+0110
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+25ca
+0xd8	U+f8ff
+0xd9	U+00a9
+0xda	U+2044
+0xdb	U+00a4
+0xdc	U+2039
+0xdd	U+203a
+0xde	U+00c6
+0xdf	U+00bb
+0xe0	U+2013
+0xe1	U+00b7
+0xe2	U+201a
+0xe3	U+201e
+0xe4	U+2030
+0xe5	U+00c2
+0xe6	U+0107
+0xe7	U+00c1
+0xe8	U+010d
+0xe9	U+00c8
+0xea	U+00cd
+0xeb	U+00ce
+0xec	U+00cf
+0xed	U+00cc
+0xee	U+00d3
+0xef	U+00d4
+0xf0	U+0111
+0xf1	U+00d2
+0xf2	U+00da
+0xf3	U+00db
+0xf4	U+00d9
+0xf5	U+0131
+0xf6	U+02c6
+0xf7	U+02dc
+0xf8	U+00af
+0xf9	U+03c0
+0xfa	U+00cb
+0xfb	U+02da
+0xfc	U+00b8
+0xfd	U+00ca
+0xfe	U+00e6
+0xff	U+02c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacCyrillic.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacCyrillic.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0410
+0x81	U+0411
+0x82	U+0412
+0x83	U+0413
+0x84	U+0414
+0x85	U+0415
+0x86	U+0416
+0x87	U+0417
+0x88	U+0418
+0x89	U+0419
+0x8a	U+041a
+0x8b	U+041b
+0x8c	U+041c
+0x8d	U+041d
+0x8e	U+041e
+0x8f	U+041f
+0x90	U+0420
+0x91	U+0421
+0x92	U+0422
+0x93	U+0423
+0x94	U+0424
+0x95	U+0425
+0x96	U+0426
+0x97	U+0427
+0x98	U+0428
+0x99	U+0429
+0x9a	U+042a
+0x9b	U+042b
+0x9c	U+042c
+0x9d	U+042d
+0x9e	U+042e
+0x9f	U+042f
+0xa0	U+2020
+0xa1	U+00b0
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a7
+0xa5	U+2022
+0xa6	U+00b6
+0xa7	U+0406
+0xa8	U+00ae
+0xa9	U+00a9
+0xaa	U+2122
+0xab	U+0402
+0xac	U+0452
+0xad	U+2260
+0xae	U+0403
+0xaf	U+0453
+0xb0	U+221e
+0xb1	U+00b1
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+0456
+0xb5	U+00b5
+0xb6	U+2202
+0xb7	U+0408
+0xb8	U+0404
+0xb9	U+0454
+0xba	U+0407
+0xbb	U+0457
+0xbc	U+0409
+0xbd	U+0459
+0xbe	U+040a
+0xbf	U+045a
+0xc0	U+0458
+0xc1	U+0405
+0xc2	U+00ac
+0xc3	U+221a
+0xc4	U+0192
+0xc5	U+2248
+0xc6	U+2206
+0xc7	U+00ab
+0xc8	U+00bb
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+040b
+0xcc	U+045b
+0xcd	U+040c
+0xce	U+045c
+0xcf	U+0455
+0xd0	U+2013
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+201e
+0xd8	U+040e
+0xd9	U+045e
+0xda	U+040f
+0xdb	U+045f
+0xdc	U+2116
+0xdd	U+0401
+0xde	U+0451
+0xdf	U+044f
+0xe0	U+0430
+0xe1	U+0431
+0xe2	U+0432
+0xe3	U+0433
+0xe4	U+0434
+0xe5	U+0435
+0xe6	U+0436
+0xe7	U+0437
+0xe8	U+0438
+0xe9	U+0439
+0xea	U+043a
+0xeb	U+043b
+0xec	U+043c
+0xed	U+043d
+0xee	U+043e
+0xef	U+043f
+0xf0	U+0440
+0xf1	U+0441
+0xf2	U+0442
+0xf3	U+0443
+0xf4	U+0444
+0xf5	U+0445
+0xf6	U+0446
+0xf7	U+0447
+0xf8	U+0448
+0xf9	U+0449
+0xfa	U+044a
+0xfb	U+044b
+0xfc	U+044c
+0xfd	U+044d
+0xfe	U+044e
+0xff	U+00a4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacDingbat.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacDingbat.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+2701
+0x22	U+2702
+0x23	U+2703
+0x24	U+2704
+0x25	U+260e
+0x26	U+2706
+0x27	U+2707
+0x28	U+2708
+0x29	U+2709
+0x2a	U+261b
+0x2b	U+261e
+0x2c	U+270c
+0x2d	U+270d
+0x2e	U+270e
+0x2f	U+270f
+0x30	U+2710
+0x31	U+2711
+0x32	U+2712
+0x33	U+2713
+0x34	U+2714
+0x35	U+2715
+0x36	U+2716
+0x37	U+2717
+0x38	U+2718
+0x39	U+2719
+0x3a	U+271a
+0x3b	U+271b
+0x3c	U+271c
+0x3d	U+271d
+0x3e	U+271e
+0x3f	U+271f
+0x40	U+2720
+0x41	U+2721
+0x42	U+2722
+0x43	U+2723
+0x44	U+2724
+0x45	U+2725
+0x46	U+2726
+0x47	U+2727
+0x48	U+2605
+0x49	U+2729
+0x4a	U+272a
+0x4b	U+272b
+0x4c	U+272c
+0x4d	U+272d
+0x4e	U+272e
+0x4f	U+272f
+0x50	U+2730
+0x51	U+2731
+0x52	U+2732
+0x53	U+2733
+0x54	U+2734
+0x55	U+2735
+0x56	U+2736
+0x57	U+2737
+0x58	U+2738
+0x59	U+2739
+0x5a	U+273a
+0x5b	U+273b
+0x5c	U+273c
+0x5d	U+273d
+0x5e	U+273e
+0x5f	U+273f
+0x60	U+2740
+0x61	U+2741
+0x62	U+2742
+0x63	U+2743
+0x64	U+2744
+0x65	U+2745
+0x66	U+2746
+0x67	U+2747
+0x68	U+2748
+0x69	U+2749
+0x6a	U+274a
+0x6b	U+274b
+0x6c	U+25cf
+0x6d	U+274d
+0x6e	U+25a0
+0x6f	U+274f
+0x70	U+2750
+0x71	U+2751
+0x72	U+2752
+0x73	U+25b2
+0x74	U+25bc
+0x75	U+25c6
+0x76	U+2756
+0x77	U+25d7
+0x78	U+2758
+0x79	U+2759
+0x7a	U+275a
+0x7b	U+275b
+0x7c	U+275c
+0x7d	U+275d
+0x7e	U+275e
+0x7f	U+007f
+0x80	U+fffd
+0x81	U+fffd
+0x82	U+fffd
+0x83	U+fffd
+0x84	U+fffd
+0x85	U+fffd
+0x86	U+fffd
+0x87	U+fffd
+0x88	U+fffd
+0x89	U+fffd
+0x8a	U+fffd
+0x8b	U+fffd
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+fffd
+0x92	U+fffd
+0x93	U+fffd
+0x94	U+fffd
+0x95	U+fffd
+0x96	U+fffd
+0x97	U+fffd
+0x98	U+fffd
+0x99	U+fffd
+0x9a	U+fffd
+0x9b	U+fffd
+0x9c	U+fffd
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+fffd
+0xa0	U+fffd
+0xa1	U+2761
+0xa2	U+2762
+0xa3	U+2763
+0xa4	U+2764
+0xa5	U+2765
+0xa6	U+2766
+0xa7	U+2767
+0xa8	U+2663
+0xa9	U+2666
+0xaa	U+2665
+0xab	U+2660
+0xac	U+2460
+0xad	U+2461
+0xae	U+2462
+0xaf	U+2463
+0xb0	U+2464
+0xb1	U+2465
+0xb2	U+2466
+0xb3	U+2467
+0xb4	U+2468
+0xb5	U+2469
+0xb6	U+2776
+0xb7	U+2777
+0xb8	U+2778
+0xb9	U+2779
+0xba	U+277a
+0xbb	U+277b
+0xbc	U+277c
+0xbd	U+277d
+0xbe	U+277e
+0xbf	U+277f
+0xc0	U+2780
+0xc1	U+2781
+0xc2	U+2782
+0xc3	U+2783
+0xc4	U+2784
+0xc5	U+2785
+0xc6	U+2786
+0xc7	U+2787
+0xc8	U+2788
+0xc9	U+2789
+0xca	U+278a
+0xcb	U+278b
+0xcc	U+278c
+0xcd	U+278d
+0xce	U+278e
+0xcf	U+278f
+0xd0	U+2790
+0xd1	U+2791
+0xd2	U+2792
+0xd3	U+2793
+0xd4	U+2794
+0xd5	U+2192
+0xd6	U+2194
+0xd7	U+2195
+0xd8	U+2798
+0xd9	U+2799
+0xda	U+279a
+0xdb	U+279b
+0xdc	U+279c
+0xdd	U+279d
+0xde	U+279e
+0xdf	U+279f
+0xe0	U+27a0
+0xe1	U+27a1
+0xe2	U+27a2
+0xe3	U+27a3
+0xe4	U+27a4
+0xe5	U+27a5
+0xe6	U+27a6
+0xe7	U+27a7
+0xe8	U+27a8
+0xe9	U+27a9
+0xea	U+27aa
+0xeb	U+27ab
+0xec	U+27ac
+0xed	U+27ad
+0xee	U+27ae
+0xef	U+27af
+0xf0	U+fffd
+0xf1	U+27b1
+0xf2	U+27b2
+0xf3	U+27b3
+0xf4	U+27b4
+0xf5	U+27b5
+0xf6	U+27b6
+0xf7	U+27b7
+0xf8	U+27b8
+0xf9	U+27b9
+0xfa	U+27ba
+0xfb	U+27bb
+0xfc	U+27bc
+0xfd	U+27bd
+0xfe	U+27be
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacGreek.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacGreek.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+00b9
+0x82	U+00b2
+0x83	U+00c9
+0x84	U+00b3
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+0385
+0x88	U+00e0
+0x89	U+00e2
+0x8a	U+00e4
+0x8b	U+0384
+0x8c	U+00a8
+0x8d	U+00e7
+0x8e	U+00e9
+0x8f	U+00e8
+0x90	U+00ea
+0x91	U+00eb
+0x92	U+00a3
+0x93	U+2122
+0x94	U+00ee
+0x95	U+00ef
+0x96	U+2022
+0x97	U+00bd
+0x98	U+2030
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00a6
+0x9c	U+00ad
+0x9d	U+00f9
+0x9e	U+00fb
+0x9f	U+00fc
+0xa0	U+2020
+0xa1	U+0393
+0xa2	U+0394
+0xa3	U+0398
+0xa4	U+039b
+0xa5	U+039e
+0xa6	U+03a0
+0xa7	U+00df
+0xa8	U+00ae
+0xa9	U+00a9
+0xaa	U+03a3
+0xab	U+03aa
+0xac	U+00a7
+0xad	U+2260
+0xae	U+00b0
+0xaf	U+0387
+0xb0	U+0391
+0xb1	U+00b1
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+00a5
+0xb5	U+0392
+0xb6	U+0395
+0xb7	U+0396
+0xb8	U+0397
+0xb9	U+0399
+0xba	U+039a
+0xbb	U+039c
+0xbc	U+03a6
+0xbd	U+03ab
+0xbe	U+03a8
+0xbf	U+03a9
+0xc0	U+03ac
+0xc1	U+039d
+0xc2	U+00ac
+0xc3	U+039f
+0xc4	U+03a1
+0xc5	U+2248
+0xc6	U+03a4
+0xc7	U+00ab
+0xc8	U+00bb
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+03a5
+0xcc	U+03a7
+0xcd	U+0386
+0xce	U+0388
+0xcf	U+0153
+0xd0	U+2013
+0xd1	U+2015
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+0389
+0xd8	U+038a
+0xd9	U+038c
+0xda	U+038e
+0xdb	U+03ad
+0xdc	U+03ae
+0xdd	U+03af
+0xde	U+03cc
+0xdf	U+038f
+0xe0	U+03cd
+0xe1	U+03b1
+0xe2	U+03b2
+0xe3	U+03c8
+0xe4	U+03b4
+0xe5	U+03b5
+0xe6	U+03c6
+0xe7	U+03b3
+0xe8	U+03b7
+0xe9	U+03b9
+0xea	U+03be
+0xeb	U+03ba
+0xec	U+03bb
+0xed	U+03bc
+0xee	U+03bd
+0xef	U+03bf
+0xf0	U+03c0
+0xf1	U+03ce
+0xf2	U+03c1
+0xf3	U+03c3
+0xf4	U+03c4
+0xf5	U+03b8
+0xf6	U+03c9
+0xf7	U+03c2
+0xf8	U+03c7
+0xf9	U+03c5
+0xfa	U+03b6
+0xfb	U+03ca
+0xfc	U+03cb
+0xfd	U+0390
+0xfe	U+03b0
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacHebrew.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacHebrew.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+fb1f
+0x82	U+00c7
+0x83	U+00c9
+0x84	U+00d1
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+00e1
+0x88	U+00e0
+0x89	U+00e2
+0x8a	U+00e4
+0x8b	U+00e3
+0x8c	U+00e5
+0x8d	U+00e7
+0x8e	U+00e9
+0x8f	U+00e8
+0x90	U+00ea
+0x91	U+00eb
+0x92	U+00ed
+0x93	U+00ec
+0x94	U+00ee
+0x95	U+00ef
+0x96	U+00f1
+0x97	U+00f3
+0x98	U+00f2
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00f5
+0x9c	U+00fa
+0x9d	U+00f9
+0x9e	U+00fb
+0x9f	U+00fc
+0xa0	U+fffd
+0xa1	U+fffd
+0xa2	U+fffd
+0xa3	U+fffd
+0xa4	U+fffd
+0xa5	U+fffd
+0xa6	U+20aa
+0xa7	U+fffd
+0xa8	U+fffd
+0xa9	U+fffd
+0xaa	U+fffd
+0xab	U+fffd
+0xac	U+fffd
+0xad	U+fffd
+0xae	U+fffd
+0xaf	U+fffd
+0xb0	U+fffd
+0xb1	U+fffd
+0xb2	U+fffd
+0xb3	U+fffd
+0xb4	U+fffd
+0xb5	U+fffd
+0xb6	U+fffd
+0xb7	U+fffd
+0xb8	U+fffd
+0xb9	U+fffd
+0xba	U+fffd
+0xbb	U+fffd
+0xbc	U+fffd
+0xbd	U+fffd
+0xbe	U+fffd
+0xbf	U+fffd
+0xc0	U+fffd
+0xc1	U+201e
+0xc2	U+fffd
+0xc3	U+fffd
+0xc4	U+fffd
+0xc5	U+fffd
+0xc6	U+05bc
+0xc7	U+fb4b
+0xc8	U+fb35
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+05b8
+0xcc	U+05b7
+0xcd	U+05b5
+0xce	U+05b6
+0xcf	U+05b4
+0xd0	U+2013
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+fb2a
+0xd7	U+fb2b
+0xd8	U+05bf
+0xd9	U+05b0
+0xda	U+05b2
+0xdb	U+05b1
+0xdc	U+05bb
+0xdd	U+05b9
+0xde	U+fffd
+0xdf	U+05b3
+0xe0	U+05d0
+0xe1	U+05d1
+0xe2	U+05d2
+0xe3	U+05d3
+0xe4	U+05d4
+0xe5	U+05d5
+0xe6	U+05d6
+0xe7	U+05d7
+0xe8	U+05d8
+0xe9	U+05d9
+0xea	U+05da
+0xeb	U+05db
+0xec	U+05dc
+0xed	U+05dd
+0xee	U+05de
+0xef	U+05df
+0xf0	U+05e0
+0xf1	U+05e1
+0xf2	U+05e2
+0xf3	U+05e3
+0xf4	U+05e4
+0xf5	U+05e5
+0xf6	U+05e6
+0xf7	U+05e7
+0xf8	U+05e8
+0xf9	U+05e9
+0xfa	U+05ea
+0xfb	U+fffd
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacIceland.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacIceland.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+00c5
+0x82	U+00c7
+0x83	U+00c9
+0x84	U+00d1
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+00e1
+0x88	U+00e0
+0x89	U+00e2
+0x8a	U+00e4
+0x8b	U+00e3
+0x8c	U+00e5
+0x8d	U+00e7
+0x8e	U+00e9
+0x8f	U+00e8
+0x90	U+00ea
+0x91	U+00eb
+0x92	U+00ed
+0x93	U+00ec
+0x94	U+00ee
+0x95	U+00ef
+0x96	U+00f1
+0x97	U+00f3
+0x98	U+00f2
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00f5
+0x9c	U+00fa
+0x9d	U+00f9
+0x9e	U+00fb
+0x9f	U+00fc
+0xa0	U+00dd
+0xa1	U+00b0
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a7
+0xa5	U+2022
+0xa6	U+00b6
+0xa7	U+00df
+0xa8	U+00ae
+0xa9	U+00a9
+0xaa	U+2122
+0xab	U+00b4
+0xac	U+00a8
+0xad	U+2260
+0xae	U+00c6
+0xaf	U+00d8
+0xb0	U+221e
+0xb1	U+00b1
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+00a5
+0xb5	U+00b5
+0xb6	U+2202
+0xb7	U+2211
+0xb8	U+220f
+0xb9	U+03c0
+0xba	U+222b
+0xbb	U+00aa
+0xbc	U+00ba
+0xbd	U+2126
+0xbe	U+00e6
+0xbf	U+00f8
+0xc0	U+00bf
+0xc1	U+00a1
+0xc2	U+00ac
+0xc3	U+221a
+0xc4	U+0192
+0xc5	U+2248
+0xc6	U+2206
+0xc7	U+00ab
+0xc8	U+00bb
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+00c0
+0xcc	U+00c3
+0xcd	U+00d5
+0xce	U+0152
+0xcf	U+0153
+0xd0	U+2013
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+25ca
+0xd8	U+00ff
+0xd9	U+0178
+0xda	U+2044
+0xdb	U+00a4
+0xdc	U+00d0
+0xdd	U+00f0
+0xde	U+00de
+0xdf	U+00fe
+0xe0	U+00fd
+0xe1	U+00b7
+0xe2	U+201a
+0xe3	U+201e
+0xe4	U+2030
+0xe5	U+00c2
+0xe6	U+00ca
+0xe7	U+00c1
+0xe8	U+00cb
+0xe9	U+00c8
+0xea	U+00cd
+0xeb	U+00ce
+0xec	U+00cf
+0xed	U+00cc
+0xee	U+00d3
+0xef	U+00d4
+0xf0	U+f8ff
+0xf1	U+00d2
+0xf2	U+00da
+0xf3	U+00db
+0xf4	U+00d9
+0xf5	U+0131
+0xf6	U+02c6
+0xf7	U+02dc
+0xf8	U+00af
+0xf9	U+02d8
+0xfa	U+02d9
+0xfb	U+02da
+0xfc	U+00b8
+0xfd	U+02dd
+0xfe	U+02db
+0xff	U+02c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacRoman.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacRoman.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+00c5
+0x82	U+00c7
+0x83	U+00c9
+0x84	U+00d1
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+00e1
+0x88	U+00e0
+0x89	U+00e2
+0x8a	U+00e4
+0x8b	U+00e3
+0x8c	U+00e5
+0x8d	U+00e7
+0x8e	U+00e9
+0x8f	U+00e8
+0x90	U+00ea
+0x91	U+00eb
+0x92	U+00ed
+0x93	U+00ec
+0x94	U+00ee
+0x95	U+00ef
+0x96	U+00f1
+0x97	U+00f3
+0x98	U+00f2
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00f5
+0x9c	U+00fa
+0x9d	U+00f9
+0x9e	U+00fb
+0x9f	U+00fc
+0xa0	U+2020
+0xa1	U+00b0
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a7
+0xa5	U+2022
+0xa6	U+00b6
+0xa7	U+00df
+0xa8	U+00ae
+0xa9	U+00a9
+0xaa	U+2122
+0xab	U+00b4
+0xac	U+00a8
+0xad	U+2260
+0xae	U+00c6
+0xaf	U+00d8
+0xb0	U+221e
+0xb1	U+00b1
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+00a5
+0xb5	U+00b5
+0xb6	U+2202
+0xb7	U+2211
+0xb8	U+220f
+0xb9	U+03c0
+0xba	U+222b
+0xbb	U+00aa
+0xbc	U+00ba
+0xbd	U+03a9
+0xbe	U+00e6
+0xbf	U+00f8
+0xc0	U+00bf
+0xc1	U+00a1
+0xc2	U+00ac
+0xc3	U+221a
+0xc4	U+0192
+0xc5	U+2248
+0xc6	U+2206
+0xc7	U+00ab
+0xc8	U+00bb
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+00c0
+0xcc	U+00c3
+0xcd	U+00d5
+0xce	U+0152
+0xcf	U+0153
+0xd0	U+2013
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+25ca
+0xd8	U+00ff
+0xd9	U+0178
+0xda	U+2044
+0xdb	U+20ac
+0xdc	U+2039
+0xdd	U+203a
+0xde	U+fb01
+0xdf	U+fb02
+0xe0	U+2021
+0xe1	U+00b7
+0xe2	U+201a
+0xe3	U+201e
+0xe4	U+2030
+0xe5	U+00c2
+0xe6	U+00ca
+0xe7	U+00c1
+0xe8	U+00cb
+0xe9	U+00c8
+0xea	U+00cd
+0xeb	U+00ce
+0xec	U+00cf
+0xed	U+00cc
+0xee	U+00d3
+0xef	U+00d4
+0xf0	U+f8ff
+0xf1	U+00d2
+0xf2	U+00da
+0xf3	U+00db
+0xf4	U+00d9
+0xf5	U+0131
+0xf6	U+02c6
+0xf7	U+02dc
+0xf8	U+00af
+0xf9	U+02d8
+0xfa	U+02d9
+0xfb	U+02da
+0xfc	U+00b8
+0xfd	U+02dd
+0xfe	U+02db
+0xff	U+02c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacRomania.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacRomania.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+00c5
+0x82	U+00c7
+0x83	U+00c9
+0x84	U+00d1
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+00e1
+0x88	U+00e0
+0x89	U+00e2
+0x8a	U+00e4
+0x8b	U+00e3
+0x8c	U+00e5
+0x8d	U+00e7
+0x8e	U+00e9
+0x8f	U+00e8
+0x90	U+00ea
+0x91	U+00eb
+0x92	U+00ed
+0x93	U+00ec
+0x94	U+00ee
+0x95	U+00ef
+0x96	U+00f1
+0x97	U+00f3
+0x98	U+00f2
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00f5
+0x9c	U+00fa
+0x9d	U+00f9
+0x9e	U+00fb
+0x9f	U+00fc
+0xa0	U+2020
+0xa1	U+00b0
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a7
+0xa5	U+2022
+0xa6	U+00b6
+0xa7	U+00df
+0xa8	U+00ae
+0xa9	U+00a9
+0xaa	U+2122
+0xab	U+00b4
+0xac	U+00a8
+0xad	U+2260
+0xae	U+0102
+0xaf	U+015e
+0xb0	U+221e
+0xb1	U+00b1
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+00a5
+0xb5	U+00b5
+0xb6	U+2202
+0xb7	U+2211
+0xb8	U+220f
+0xb9	U+03c0
+0xba	U+222b
+0xbb	U+00aa
+0xbc	U+00ba
+0xbd	U+2126
+0xbe	U+0103
+0xbf	U+015f
+0xc0	U+00bf
+0xc1	U+00a1
+0xc2	U+00ac
+0xc3	U+221a
+0xc4	U+0192
+0xc5	U+2248
+0xc6	U+2206
+0xc7	U+00ab
+0xc8	U+00bb
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+00c0
+0xcc	U+00c3
+0xcd	U+00d5
+0xce	U+0152
+0xcf	U+0153
+0xd0	U+2013
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+25ca
+0xd8	U+00ff
+0xd9	U+0178
+0xda	U+2044
+0xdb	U+00a4
+0xdc	U+2039
+0xdd	U+203a
+0xde	U+0162
+0xdf	U+0163
+0xe0	U+2021
+0xe1	U+00b7
+0xe2	U+201a
+0xe3	U+201e
+0xe4	U+2030
+0xe5	U+00c2
+0xe6	U+00ca
+0xe7	U+00c1
+0xe8	U+00cb
+0xe9	U+00c8
+0xea	U+00cd
+0xeb	U+00ce
+0xec	U+00cf
+0xed	U+00cc
+0xee	U+00d3
+0xef	U+00d4
+0xf0	U+f8ff
+0xf1	U+00d2
+0xf2	U+00da
+0xf3	U+00db
+0xf4	U+00d9
+0xf5	U+0131
+0xf6	U+02c6
+0xf7	U+02dc
+0xf8	U+00af
+0xf9	U+02d8
+0xfa	U+02d9
+0xfb	U+02da
+0xfc	U+00b8
+0xfd	U+02dd
+0xfe	U+02db
+0xff	U+02c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacSymbol.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacSymbol.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+2200
+0x23	U+0023
+0x24	U+2203
+0x25	U+0025
+0x26	U+0026
+0x27	U+220d
+0x28	U+0028
+0x29	U+0029
+0x2a	U+2217
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+2212
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+2245
+0x41	U+0391
+0x42	U+0392
+0x43	U+03a7
+0x44	U+0394
+0x45	U+0395
+0x46	U+03a6
+0x47	U+0393
+0x48	U+0397
+0x49	U+0399
+0x4a	U+03d1
+0x4b	U+039a
+0x4c	U+039b
+0x4d	U+039c
+0x4e	U+039d
+0x4f	U+039f
+0x50	U+03a0
+0x51	U+0398
+0x52	U+03a1
+0x53	U+03a3
+0x54	U+03a4
+0x55	U+03a5
+0x56	U+03c2
+0x57	U+03a9
+0x58	U+039e
+0x59	U+03a8
+0x5a	U+0396
+0x5b	U+005b
+0x5c	U+2234
+0x5d	U+005d
+0x5e	U+22a5
+0x5f	U+005f
+0x60	U+f8e5
+0x61	U+03b1
+0x62	U+03b2
+0x63	U+03c7
+0x64	U+03b4
+0x65	U+03b5
+0x66	U+03c6
+0x67	U+03b3
+0x68	U+03b7
+0x69	U+03b9
+0x6a	U+03d5
+0x6b	U+03ba
+0x6c	U+03bb
+0x6d	U+03bc
+0x6e	U+03bd
+0x6f	U+03bf
+0x70	U+03c0
+0x71	U+03b8
+0x72	U+03c1
+0x73	U+03c3
+0x74	U+03c4
+0x75	U+03c5
+0x76	U+03d6
+0x77	U+03c9
+0x78	U+03be
+0x79	U+03c8
+0x7a	U+03b6
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+223c
+0x7f	U+007f
+0x80	U+fffd
+0x81	U+fffd
+0x82	U+fffd
+0x83	U+fffd
+0x84	U+fffd
+0x85	U+fffd
+0x86	U+fffd
+0x87	U+fffd
+0x88	U+fffd
+0x89	U+fffd
+0x8a	U+fffd
+0x8b	U+fffd
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+fffd
+0x92	U+fffd
+0x93	U+fffd
+0x94	U+fffd
+0x95	U+fffd
+0x96	U+fffd
+0x97	U+fffd
+0x98	U+fffd
+0x99	U+fffd
+0x9a	U+fffd
+0x9b	U+fffd
+0x9c	U+fffd
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+fffd
+0xa0	U+20ac
+0xa1	U+03d2
+0xa2	U+2032
+0xa3	U+2264
+0xa4	U+2044
+0xa5	U+221e
+0xa6	U+0192
+0xa7	U+2663
+0xa8	U+2666
+0xa9	U+2665
+0xaa	U+2660
+0xab	U+2194
+0xac	U+2190
+0xad	U+2191
+0xae	U+2192
+0xaf	U+2193
+0xb0	U+00b0
+0xb1	U+00b1
+0xb2	U+2033
+0xb3	U+2265
+0xb4	U+00d7
+0xb5	U+221d
+0xb6	U+2202
+0xb7	U+2022
+0xb8	U+00f7
+0xb9	U+2260
+0xba	U+2261
+0xbb	U+2248
+0xbc	U+2026
+0xbd	U+f8e6
+0xbe	U+f8e7
+0xbf	U+21b5
+0xc0	U+2135
+0xc1	U+2111
+0xc2	U+211c
+0xc3	U+2118
+0xc4	U+2297
+0xc5	U+2295
+0xc6	U+2205
+0xc7	U+2229
+0xc8	U+222a
+0xc9	U+2283
+0xca	U+2287
+0xcb	U+2284
+0xcc	U+2282
+0xcd	U+2286
+0xce	U+2208
+0xcf	U+2209
+0xd0	U+2220
+0xd1	U+2207
+0xd2	U+00ae
+0xd3	U+00a9
+0xd4	U+2122
+0xd5	U+220f
+0xd6	U+221a
+0xd7	U+22c5
+0xd8	U+00ac
+0xd9	U+2227
+0xda	U+2228
+0xdb	U+21d4
+0xdc	U+21d0
+0xdd	U+21d1
+0xde	U+21d2
+0xdf	U+21d3
+0xe0	U+22c4
+0xe1	U+3008
+0xe2	U+fffd
+0xe3	U+fffd
+0xe4	U+fffd
+0xe5	U+2211
+0xe6	U+fffd
+0xe7	U+fffd
+0xe8	U+fffd
+0xe9	U+fffd
+0xea	U+fffd
+0xeb	U+fffd
+0xec	U+fffd
+0xed	U+fffd
+0xee	U+fffd
+0xef	U+f8f4
+0xf0	U+f8ff
+0xf1	U+3009
+0xf2	U+222b
+0xf3	U+2320
+0xf4	U+fffd
+0xf5	U+2321
+0xf6	U+fffd
+0xf7	U+fffd
+0xf8	U+fffd
+0xf9	U+fffd
+0xfa	U+fffd
+0xfb	U+fffd
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacThai.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacThai.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00ab
+0x81	U+00bb
+0x82	U+2026
+0x83	U+f88c
+0x84	U+f88f
+0x85	U+f892
+0x86	U+f895
+0x87	U+f898
+0x88	U+f88b
+0x89	U+f88e
+0x8a	U+f891
+0x8b	U+f894
+0x8c	U+f897
+0x8d	U+201c
+0x8e	U+201d
+0x8f	U+f899
+0x90	U+fffd
+0x91	U+2022
+0x92	U+f884
+0x93	U+f889
+0x94	U+f885
+0x95	U+f886
+0x96	U+f887
+0x97	U+f888
+0x98	U+f88a
+0x99	U+f88d
+0x9a	U+f890
+0x9b	U+f893
+0x9c	U+f896
+0x9d	U+2018
+0x9e	U+2019
+0x9f	U+fffd
+0xa0	U+00a0
+0xa1	U+0e01
+0xa2	U+0e02
+0xa3	U+0e03
+0xa4	U+0e04
+0xa5	U+0e05
+0xa6	U+0e06
+0xa7	U+0e07
+0xa8	U+0e08
+0xa9	U+0e09
+0xaa	U+0e0a
+0xab	U+0e0b
+0xac	U+0e0c
+0xad	U+0e0d
+0xae	U+0e0e
+0xaf	U+0e0f
+0xb0	U+0e10
+0xb1	U+0e11
+0xb2	U+0e12
+0xb3	U+0e13
+0xb4	U+0e14
+0xb5	U+0e15
+0xb6	U+0e16
+0xb7	U+0e17
+0xb8	U+0e18
+0xb9	U+0e19
+0xba	U+0e1a
+0xbb	U+0e1b
+0xbc	U+0e1c
+0xbd	U+0e1d
+0xbe	U+0e1e
+0xbf	U+0e1f
+0xc0	U+0e20
+0xc1	U+0e21
+0xc2	U+0e22
+0xc3	U+0e23
+0xc4	U+0e24
+0xc5	U+0e25
+0xc6	U+0e26
+0xc7	U+0e27
+0xc8	U+0e28
+0xc9	U+0e29
+0xca	U+0e2a
+0xcb	U+0e2b
+0xcc	U+0e2c
+0xcd	U+0e2d
+0xce	U+0e2e
+0xcf	U+0e2f
+0xd0	U+0e30
+0xd1	U+0e31
+0xd2	U+0e32
+0xd3	U+0e33
+0xd4	U+0e34
+0xd5	U+0e35
+0xd6	U+0e36
+0xd7	U+0e37
+0xd8	U+0e38
+0xd9	U+0e39
+0xda	U+0e3a
+0xdb	U+feff
+0xdc	U+200b
+0xdd	U+2013
+0xde	U+2014
+0xdf	U+0e3f
+0xe0	U+0e40
+0xe1	U+0e41
+0xe2	U+0e42
+0xe3	U+0e43
+0xe4	U+0e44
+0xe5	U+0e45
+0xe6	U+0e46
+0xe7	U+0e47
+0xe8	U+0e48
+0xe9	U+0e49
+0xea	U+0e4a
+0xeb	U+0e4b
+0xec	U+0e4c
+0xed	U+0e4d
+0xee	U+2122
+0xef	U+0e4f
+0xf0	U+0e50
+0xf1	U+0e51
+0xf2	U+0e52
+0xf3	U+0e53
+0xf4	U+0e54
+0xf5	U+0e55
+0xf6	U+0e56
+0xf7	U+0e57
+0xf8	U+0e58
+0xf9	U+0e59
+0xfa	U+00ae
+0xfb	U+00a9
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacTurkish.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacTurkish.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+00c4
+0x81	U+00c5
+0x82	U+00c7
+0x83	U+00c9
+0x84	U+00d1
+0x85	U+00d6
+0x86	U+00dc
+0x87	U+00e1
+0x88	U+00e0
+0x89	U+00e2
+0x8a	U+00e4
+0x8b	U+00e3
+0x8c	U+00e5
+0x8d	U+00e7
+0x8e	U+00e9
+0x8f	U+00e8
+0x90	U+00ea
+0x91	U+00eb
+0x92	U+00ed
+0x93	U+00ec
+0x94	U+00ee
+0x95	U+00ef
+0x96	U+00f1
+0x97	U+00f3
+0x98	U+00f2
+0x99	U+00f4
+0x9a	U+00f6
+0x9b	U+00f5
+0x9c	U+00fa
+0x9d	U+00f9
+0x9e	U+00fb
+0x9f	U+00fc
+0xa0	U+2020
+0xa1	U+00b0
+0xa2	U+00a2
+0xa3	U+00a3
+0xa4	U+00a7
+0xa5	U+2022
+0xa6	U+00b6
+0xa7	U+00df
+0xa8	U+00ae
+0xa9	U+00a9
+0xaa	U+2122
+0xab	U+00b4
+0xac	U+00a8
+0xad	U+2260
+0xae	U+00c6
+0xaf	U+00d8
+0xb0	U+221e
+0xb1	U+00b1
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+00a5
+0xb5	U+00b5
+0xb6	U+2202
+0xb7	U+2211
+0xb8	U+220f
+0xb9	U+03c0
+0xba	U+222b
+0xbb	U+00aa
+0xbc	U+00ba
+0xbd	U+2126
+0xbe	U+00e6
+0xbf	U+00f8
+0xc0	U+00bf
+0xc1	U+00a1
+0xc2	U+00ac
+0xc3	U+221a
+0xc4	U+0192
+0xc5	U+2248
+0xc6	U+2206
+0xc7	U+00ab
+0xc8	U+00bb
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+00c0
+0xcc	U+00c3
+0xcd	U+00d5
+0xce	U+0152
+0xcf	U+0153
+0xd0	U+2013
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+25ca
+0xd8	U+00ff
+0xd9	U+0178
+0xda	U+011e
+0xdb	U+011f
+0xdc	U+0130
+0xdd	U+0131
+0xde	U+015e
+0xdf	U+015f
+0xe0	U+2021
+0xe1	U+00b7
+0xe2	U+201a
+0xe3	U+201e
+0xe4	U+2030
+0xe5	U+00c2
+0xe6	U+00ca
+0xe7	U+00c1
+0xe8	U+00cb
+0xe9	U+00c8
+0xea	U+00cd
+0xeb	U+00ce
+0xec	U+00cf
+0xed	U+00cc
+0xee	U+00d3
+0xef	U+00d4
+0xf0	U+f8ff
+0xf1	U+00d2
+0xf2	U+00da
+0xf3	U+00db
+0xf4	U+00d9
+0xf5	U+fffd
+0xf6	U+02c6
+0xf7	U+02dc
+0xf8	U+00af
+0xf9	U+02d8
+0xfa	U+02d9
+0xfb	U+02da
+0xfc	U+00b8
+0xfd	U+02dd
+0xfe	U+02db
+0xff	U+02c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/MacUkraine.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from MacUkraine.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+0410
+0x81	U+0411
+0x82	U+0412
+0x83	U+0413
+0x84	U+0414
+0x85	U+0415
+0x86	U+0416
+0x87	U+0417
+0x88	U+0418
+0x89	U+0419
+0x8a	U+041a
+0x8b	U+041b
+0x8c	U+041c
+0x8d	U+041d
+0x8e	U+041e
+0x8f	U+041f
+0x90	U+0420
+0x91	U+0421
+0x92	U+0422
+0x93	U+0423
+0x94	U+0424
+0x95	U+0425
+0x96	U+0426
+0x97	U+0427
+0x98	U+0428
+0x99	U+0429
+0x9a	U+042a
+0x9b	U+042b
+0x9c	U+042c
+0x9d	U+042d
+0x9e	U+042e
+0x9f	U+042f
+0xa0	U+2020
+0xa1	U+00b0
+0xa2	U+0490
+0xa3	U+00a3
+0xa4	U+00a7
+0xa5	U+2022
+0xa6	U+00b6
+0xa7	U+0406
+0xa8	U+00ae
+0xa9	U+00a9
+0xaa	U+2122
+0xab	U+0402
+0xac	U+0452
+0xad	U+2260
+0xae	U+0403
+0xaf	U+0453
+0xb0	U+221e
+0xb1	U+00b1
+0xb2	U+2264
+0xb3	U+2265
+0xb4	U+0456
+0xb5	U+00b5
+0xb6	U+0491
+0xb7	U+0408
+0xb8	U+0404
+0xb9	U+0454
+0xba	U+0407
+0xbb	U+0457
+0xbc	U+0409
+0xbd	U+0459
+0xbe	U+040a
+0xbf	U+045a
+0xc0	U+0458
+0xc1	U+0405
+0xc2	U+00ac
+0xc3	U+221a
+0xc4	U+0192
+0xc5	U+2248
+0xc6	U+2206
+0xc7	U+00ab
+0xc8	U+00bb
+0xc9	U+2026
+0xca	U+00a0
+0xcb	U+040b
+0xcc	U+045b
+0xcd	U+040c
+0xce	U+045c
+0xcf	U+0455
+0xd0	U+2013
+0xd1	U+2014
+0xd2	U+201c
+0xd3	U+201d
+0xd4	U+2018
+0xd5	U+2019
+0xd6	U+00f7
+0xd7	U+201e
+0xd8	U+040e
+0xd9	U+045e
+0xda	U+040f
+0xdb	U+045f
+0xdc	U+2116
+0xdd	U+0401
+0xde	U+0451
+0xdf	U+044f
+0xe0	U+0430
+0xe1	U+0431
+0xe2	U+0432
+0xe3	U+0433
+0xe4	U+0434
+0xe5	U+0435
+0xe6	U+0436
+0xe7	U+0437
+0xe8	U+0438
+0xe9	U+0439
+0xea	U+043a
+0xeb	U+043b
+0xec	U+043c
+0xed	U+043d
+0xee	U+043e
+0xef	U+043f
+0xf0	U+0440
+0xf1	U+0441
+0xf2	U+0442
+0xf3	U+0443
+0xf4	U+0444
+0xf5	U+0445
+0xf6	U+0446
+0xf7	U+0447
+0xf8	U+0448
+0xf9	U+0449
+0xfa	U+044a
+0xfb	U+044b
+0xfc	U+044c
+0xfd	U+044d
+0xfe	U+044e
+0xff	U+00a4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/SingleByte-X.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package $PACKAGE$;
+
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import sun.nio.cs.StandardCharsets;
+import sun.nio.cs.SingleByte;
+import sun.nio.cs.HistoricallyNamedCharset;
+import static sun.nio.cs.CharsetMapping.*;
+
+public class $NAME_CLZ$ extends Charset implements HistoricallyNamedCharset
+{
+    public $NAME_CLZ$() {
+        super("$NAME_CS$", $NAME_ALIASES$);
+    }
+
+    public String historicalName() {
+        return "$NAME_HIS$";
+    }
+
+    public boolean contains(Charset cs) {
+        $CONTAINS$;
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new SingleByte.Decoder(this, b2c);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new SingleByte.Encoder(this, c2b, c2bIndex);
+    }
+
+    public String getDecoderSingleByteMappings() {
+        return b2cTable;
+    }
+
+    public char[] getEncoderIndex2() {
+        return c2b;
+    }
+
+    public char[] getEncoderIndex1() {
+        return c2bIndex;
+    }
+
+    private final static String b2cTable = $B2CTABLE$
+
+    private final static char[] b2c = b2cTable.toCharArray();
+    private final static char[] c2b = new char[$C2BLENGTH$];
+    private final static char[] c2bIndex = new char[0x100];
+
+    static {
+        char[] b2cMap = b2c;
+        char[] c2bNR = null;
+        $NONROUNDTRIP_B2C$
+        $NONROUNDTRIP_C2B$
+        SingleByte.initC2B(b2cMap, c2bNR, c2b, c2bIndex);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/TIS_620.map	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,257 @@
+#Generated from TIS_620.java
+0x00	U+0000
+0x01	U+0001
+0x02	U+0002
+0x03	U+0003
+0x04	U+0004
+0x05	U+0005
+0x06	U+0006
+0x07	U+0007
+0x08	U+0008
+0x09	U+0009
+0x0a	U+000a
+0x0b	U+000b
+0x0c	U+000c
+0x0d	U+000d
+0x0e	U+000e
+0x0f	U+000f
+0x10	U+0010
+0x11	U+0011
+0x12	U+0012
+0x13	U+0013
+0x14	U+0014
+0x15	U+0015
+0x16	U+0016
+0x17	U+0017
+0x18	U+0018
+0x19	U+0019
+0x1a	U+001a
+0x1b	U+001b
+0x1c	U+001c
+0x1d	U+001d
+0x1e	U+001e
+0x1f	U+001f
+0x20	U+0020
+0x21	U+0021
+0x22	U+0022
+0x23	U+0023
+0x24	U+0024
+0x25	U+0025
+0x26	U+0026
+0x27	U+0027
+0x28	U+0028
+0x29	U+0029
+0x2a	U+002a
+0x2b	U+002b
+0x2c	U+002c
+0x2d	U+002d
+0x2e	U+002e
+0x2f	U+002f
+0x30	U+0030
+0x31	U+0031
+0x32	U+0032
+0x33	U+0033
+0x34	U+0034
+0x35	U+0035
+0x36	U+0036
+0x37	U+0037
+0x38	U+0038
+0x39	U+0039
+0x3a	U+003a
+0x3b	U+003b
+0x3c	U+003c
+0x3d	U+003d
+0x3e	U+003e
+0x3f	U+003f
+0x40	U+0040
+0x41	U+0041
+0x42	U+0042
+0x43	U+0043
+0x44	U+0044
+0x45	U+0045
+0x46	U+0046
+0x47	U+0047
+0x48	U+0048
+0x49	U+0049
+0x4a	U+004a
+0x4b	U+004b
+0x4c	U+004c
+0x4d	U+004d
+0x4e	U+004e
+0x4f	U+004f
+0x50	U+0050
+0x51	U+0051
+0x52	U+0052
+0x53	U+0053
+0x54	U+0054
+0x55	U+0055
+0x56	U+0056
+0x57	U+0057
+0x58	U+0058
+0x59	U+0059
+0x5a	U+005a
+0x5b	U+005b
+0x5c	U+005c
+0x5d	U+005d
+0x5e	U+005e
+0x5f	U+005f
+0x60	U+0060
+0x61	U+0061
+0x62	U+0062
+0x63	U+0063
+0x64	U+0064
+0x65	U+0065
+0x66	U+0066
+0x67	U+0067
+0x68	U+0068
+0x69	U+0069
+0x6a	U+006a
+0x6b	U+006b
+0x6c	U+006c
+0x6d	U+006d
+0x6e	U+006e
+0x6f	U+006f
+0x70	U+0070
+0x71	U+0071
+0x72	U+0072
+0x73	U+0073
+0x74	U+0074
+0x75	U+0075
+0x76	U+0076
+0x77	U+0077
+0x78	U+0078
+0x79	U+0079
+0x7a	U+007a
+0x7b	U+007b
+0x7c	U+007c
+0x7d	U+007d
+0x7e	U+007e
+0x7f	U+007f
+0x80	U+fffd
+0x81	U+fffd
+0x82	U+fffd
+0x83	U+fffd
+0x84	U+fffd
+0x85	U+fffd
+0x86	U+fffd
+0x87	U+fffd
+0x88	U+fffd
+0x89	U+fffd
+0x8a	U+fffd
+0x8b	U+fffd
+0x8c	U+fffd
+0x8d	U+fffd
+0x8e	U+fffd
+0x8f	U+fffd
+0x90	U+fffd
+0x91	U+fffd
+0x92	U+fffd
+0x93	U+fffd
+0x94	U+fffd
+0x95	U+fffd
+0x96	U+fffd
+0x97	U+fffd
+0x98	U+fffd
+0x99	U+fffd
+0x9a	U+fffd
+0x9b	U+fffd
+0x9c	U+fffd
+0x9d	U+fffd
+0x9e	U+fffd
+0x9f	U+fffd
+0xa0	U+00a0
+0xa1	U+0e01
+0xa2	U+0e02
+0xa3	U+0e03
+0xa4	U+0e04
+0xa5	U+0e05
+0xa6	U+0e06
+0xa7	U+0e07
+0xa8	U+0e08
+0xa9	U+0e09
+0xaa	U+0e0a
+0xab	U+0e0b
+0xac	U+0e0c
+0xad	U+0e0d
+0xae	U+0e0e
+0xaf	U+0e0f
+0xb0	U+0e10
+0xb1	U+0e11
+0xb2	U+0e12
+0xb3	U+0e13
+0xb4	U+0e14
+0xb5	U+0e15
+0xb6	U+0e16
+0xb7	U+0e17
+0xb8	U+0e18
+0xb9	U+0e19
+0xba	U+0e1a
+0xbb	U+0e1b
+0xbc	U+0e1c
+0xbd	U+0e1d
+0xbe	U+0e1e
+0xbf	U+0e1f
+0xc0	U+0e20
+0xc1	U+0e21
+0xc2	U+0e22
+0xc3	U+0e23
+0xc4	U+0e24
+0xc5	U+0e25
+0xc6	U+0e26
+0xc7	U+0e27
+0xc8	U+0e28
+0xc9	U+0e29
+0xca	U+0e2a
+0xcb	U+0e2b
+0xcc	U+0e2c
+0xcd	U+0e2d
+0xce	U+0e2e
+0xcf	U+0e2f
+0xd0	U+0e30
+0xd1	U+0e31
+0xd2	U+0e32
+0xd3	U+0e33
+0xd4	U+0e34
+0xd5	U+0e35
+0xd6	U+0e36
+0xd7	U+0e37
+0xd8	U+0e38
+0xd9	U+0e39
+0xda	U+0e3a
+0xdb	U+fffd
+0xdc	U+fffd
+0xdd	U+fffd
+0xde	U+fffd
+0xdf	U+0e3f
+0xe0	U+0e40
+0xe1	U+0e41
+0xe2	U+0e42
+0xe3	U+0e43
+0xe4	U+0e44
+0xe5	U+0e45
+0xe6	U+0e46
+0xe7	U+0e47
+0xe8	U+0e48
+0xe9	U+0e49
+0xea	U+0e4a
+0xeb	U+0e4b
+0xec	U+0e4c
+0xed	U+0e4d
+0xee	U+0e4e
+0xef	U+0e4f
+0xf0	U+0e50
+0xf1	U+0e51
+0xf2	U+0e52
+0xf3	U+0e53
+0xf4	U+0e54
+0xf5	U+0e55
+0xf6	U+0e56
+0xf7	U+0e57
+0xf8	U+0e58
+0xf9	U+0e59
+0xfa	U+0e5a
+0xfb	U+0e5b
+0xfc	U+fffd
+0xfd	U+fffd
+0xfe	U+fffd
+0xff	U+fffd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/extsbcs	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,74 @@
+# clzName	csName		hisName		containASCII	pkg
+IBM037		IBM037		Cp037		false		sun.nio.cs.ext
+IBM1006		x-IBM1006	Cp1006		false		sun.nio.cs.ext
+IBM1025		x-IBM1025	Cp1025		false		sun.nio.cs.ext
+IBM1026		IBM1026		Cp1026		false		sun.nio.cs.ext
+IBM1046		x-IBM1046	Cp1046		false		sun.nio.cs.ext
+IBM1047		IBM1047		Cp1047		false		sun.nio.cs.ext
+IBM1097		x-IBM1097	Cp1097		false		sun.nio.cs.ext
+IBM1098		x-IBM1098	Cp1098		false		sun.nio.cs.ext
+IBM1112		x-IBM1112	Cp1112		false		sun.nio.cs.ext
+IBM1122		x-IBM1122	Cp1122		false		sun.nio.cs.ext
+IBM1123		x-IBM1123	Cp1123		false		sun.nio.cs.ext
+IBM1124		x-IBM1124	Cp1124		false		sun.nio.cs.ext
+# map tables for 1140-1149 are updated manualy with the u+20ac entry          
+IBM1140		IBM01140	Cp1140		false		sun.nio.cs.ext
+IBM1141		IBM01141	Cp1141		false		sun.nio.cs.ext
+IBM1142		IBM01142	Cp1142		false		sun.nio.cs.ext
+IBM1143		IBM01143	Cp1143		false		sun.nio.cs.ext
+IBM1144		IBM01144	Cp1144		false		sun.nio.cs.ext
+IBM1145		IBM01145	Cp1145		false		sun.nio.cs.ext
+IBM1146		IBM01146	Cp1146		false		sun.nio.cs.ext
+IBM1147		IBM01147	Cp1147		false		sun.nio.cs.ext
+IBM1148		IBM01148	Cp1148		false		sun.nio.cs.ext
+IBM1149		IBM01149	Cp1149		false		sun.nio.cs.ext
+IBM273		IBM273		Cp273		false		sun.nio.cs.ext
+IBM277		IBM277		Cp277		false		sun.nio.cs.ext
+IBM278		IBM278		Cp278		false		sun.nio.cs.ext
+IBM280		IBM280		Cp280		false		sun.nio.cs.ext
+IBM284		IBM284		Cp284		false		sun.nio.cs.ext
+IBM285		IBM285		Cp285		false		sun.nio.cs.ext
+IBM297		IBM297		Cp297		false		sun.nio.cs.ext
+IBM420		IBM420		Cp420		false		sun.nio.cs.ext
+IBM424		IBM424		Cp424		false		sun.nio.cs.ext
+IBM500		IBM500		Cp500		false		sun.nio.cs.ext
+IBM838		IBM-Thai	Cp838		false		sun.nio.cs.ext
+IBM856		x-IBM856	Cp856		false		sun.nio.cs.ext
+IBM860		IBM860		Cp860		false		sun.nio.cs.ext
+IBM861		IBM861		Cp861		false		sun.nio.cs.ext
+IBM863		IBM863		Cp863		false		sun.nio.cs.ext
+IBM864		IBM864		Cp864		false		sun.nio.cs.ext
+IBM865		IBM865		Cp865		false		sun.nio.cs.ext
+IBM868		IBM868		Cp868		false		sun.nio.cs.ext
+IBM869		IBM869		Cp869		false		sun.nio.cs.ext
+IBM870		IBM870		Cp870		false		sun.nio.cs.ext
+IBM871		IBM871		Cp871		false		sun.nio.cs.ext
+IBM875		x-IBM875	Cp875		false		sun.nio.cs.ext
+IBM918		IBM918		Cp918		false		sun.nio.cs.ext
+IBM921		x-IBM921	Cp921		false		sun.nio.cs.ext
+IBM922		x-IBM922	Cp922		false		sun.nio.cs.ext
+# use name as hisname as well, cs did not support hisname prevously           
+ISO_8859_11	x-iso-8859-11	x-iso-8859-11	true		sun.nio.cs.ext
+ISO_8859_3	ISO-8859-3	ISO8859_3	true		sun.nio.cs.ext
+ISO_8859_6	ISO-8859-6	ISO8859_6	true		sun.nio.cs.ext
+ISO_8859_8	ISO-8859-8	ISO8859_8	true		sun.nio.cs.ext
+#JIS_X_0201	JIS_X0201	JIS_X0201	true		sun.nio.cs.ext
+MS1255		windows-1255	Cp1255		true		sun.nio.cs.ext
+MS1256		windows-1256	Cp1256		true		sun.nio.cs.ext
+MS1258		windows-1258	Cp1258		true		sun.nio.cs.ext
+MS874		x-windows-874	MS874		true		sun.nio.cs.ext
+MacArabic	x-MacArabic	MacArabic	false		sun.nio.cs.ext
+MacCentralEurope	x-MacCentralEurope	MacCentralEurope	false	sun.nio.cs.ext
+MacCroatian	x-MacCroatian	MacCroatian	false		sun.nio.cs.ext
+MacCyrillic	x-MacCyrillic	MacCyrillic	false		sun.nio.cs.ext
+MacDingbat	x-MacDingbat	MacDingbat	false		sun.nio.cs.ext
+MacGreek	x-MacGreek	MacGreek	false		sun.nio.cs.ext
+MacHebrew	x-MacHebrew	MacHebrew	false		sun.nio.cs.ext
+MacIceland	x-MacIceland	MacIceland	false		sun.nio.cs.ext
+MacRoman	x-MacRoman	MacRoman	false		sun.nio.cs.ext
+MacRomania	x-MacRomania	MacRomania	false		sun.nio.cs.ext
+MacSymbol	x-MacSymbol	MacSymbol	false		sun.nio.cs.ext
+MacThai		x-MacThai	MacThai		false		sun.nio.cs.ext
+MacTurkish	x-MacTurkish	MacTurkish	false		sun.nio.cs.ext
+MacUkraine	x-MacUkraine	MacUkraine	false		sun.nio.cs.ext
+TIS_620		TIS-620		TIS620		true		sun.nio.cs.ext
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/sbcs	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,28 @@
+# clzName	csName		hisName		containASCII	pkg
+IBM437		IBM437		Cp437		false		sun.nio.cs
+IBM737		x-IBM737	Cp737		false		sun.nio.cs	
+IBM775		IBM775		Cp775		false		sun.nio.cs
+IBM850		IBM850		Cp850		false		sun.nio.cs
+IBM852		IBM852		Cp852		false		sun.nio.cs
+IBM855		IBM855		Cp855		false		sun.nio.cs
+IBM857		IBM857		Cp857		false		sun.nio.cs	
+IBM858		IBM00858	Cp858		false		sun.nio.cs
+IBM862		IBM862		Cp862		false		sun.nio.cs
+IBM866		IBM866		Cp866		false		sun.nio.cs
+IBM874		x-IBM874	Cp874		false		sun.nio.cs
+ISO_8859_2	ISO-8859-2	ISO8859_2	true		sun.nio.cs
+ISO_8859_4	ISO-8859-4	ISO8859_4	true		sun.nio.cs
+ISO_8859_5	ISO-8859-5	ISO8859_5	true		sun.nio.cs
+ISO_8859_7	ISO-8859-7	ISO8859_7	true		sun.nio.cs
+ISO_8859_9	ISO-8859-9	ISO8859_9	true		sun.nio.cs
+ISO_8859_13	ISO-8859-13	ISO8859_13	true		sun.nio.cs
+ISO_8859_15	ISO-8859-15	ISO8859_15	true		sun.nio.cs
+KOI8_R		KOI8-R		KOI8_R		true		sun.nio.cs
+KOI8_U		KOI8-U		KOI8_U		true		sun.nio.cs
+MS1250		windows-1250	Cp1250		true		sun.nio.cs
+MS1251		windows-1251	Cp1251		true		sun.nio.cs
+MS1252		windows-1252	Cp1252		true		sun.nio.cs
+MS1253		windows-1253	Cp1253		true		sun.nio.cs
+MS1254		windows-1254	Cp1254		true		sun.nio.cs
+MS1257		windows-1257	Cp1257		true		sun.nio.cs
+
--- a/make/tools/src/build/tools/charsetmapping/GenerateMapping.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/make/tools/src/build/tools/charsetmapping/GenerateMapping.java	Thu Jan 29 18:33:52 2009 -0800
@@ -27,12 +27,13 @@
 
 import java.io.*;
 import java.util.regex.*;
+import build.tools.charsetmapping.GenerateSBCS;
 import static build.tools.charsetmapping.CharsetMapping.*;
 
 public class GenerateMapping {
     public static void main(String argv[]) throws IOException {
         if (argv.length < 2) {
-            System.out.println("Usage: java GenCSData fMap fDat");
+            System.out.println("Usage: java GenerateMapping fMap fDat");
             System.exit(1);
         }
         genDataJIS0213(new FileInputStream(argv[0]),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,262 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Scanner;
+import java.util.Formatter;
+import java.util.regex.*;
+import java.nio.charset.*;
+import static build.tools.charsetmapping.CharsetMapping.*;
+
+public class GenerateSBCS {
+    public static void main(String args[]) throws Exception {
+        if (args.length < 3) {
+            System.err.println("Usage: java GenSBCS srcDir dstDir config");
+            System.exit(1);
+        }
+
+        Scanner s = new Scanner(new File(args[0], args[2]));
+        while (s.hasNextLine()) {
+            String line = s.nextLine();
+            if (line.startsWith("#") || line.length() == 0)
+                continue;
+            String[] fields = line.split("\\s+");
+            if (fields.length < 5) {
+                System.err.println("Misconfiged sbcs line <" + line + ">?");
+                continue;
+            }
+            String clzName = fields[0];
+            String csName  = fields[1];
+            String hisName = fields[2];
+            boolean isASCII = Boolean.valueOf(fields[3]);
+            String pkgName  = fields[4];
+            System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName);
+
+            StringBuilder b2c = new StringBuilder();
+            int c2bLen = genB2C(
+                new FileInputStream(new File(args[0], clzName+".map")), b2c);
+
+            String b2cNR = null;
+            File nrF = new File(args[0], clzName+".nr");
+            if (nrF.exists()) {
+                b2cNR = genNR(new FileInputStream(nrF));
+            }
+
+            String c2bNR = null;
+            File c2bF = new File(args[0], clzName+".c2b");
+            if (c2bF.exists()) {
+                c2bNR = genC2BNR(new FileInputStream(c2bF));
+            }
+
+            genSBCSClass(args[0], args[1], "SingleByte-X.java",
+                         clzName, csName, hisName, pkgName, isASCII,
+                         b2c.toString(), b2cNR, c2bNR, c2bLen);
+        }
+    }
+
+    private static void toString(char[] sb, int off, int end,
+                                 Formatter out, String closure) {
+        while (off < end) {
+            out.format("        \"");
+            for (int j = 0; j < 8; j++) {
+                char c = sb[off++];
+                switch (c) {
+                case '\b':
+                    out.format("\\b"); break;
+                case '\t':
+                    out.format("\\t"); break;
+                case '\n':
+                    out.format("\\n"); break;
+                case '\f':
+                    out.format("\\f"); break;
+                case '\r':
+                    out.format("\\r"); break;
+                case '\"':
+                    out.format("\\\""); break;
+                case '\'':
+                    out.format("\\'"); break;
+                case '\\':
+                    out.format("\\\\"); break;
+                default:
+                    out.format("\\u%04X", c & 0xffff);
+                }
+            }
+            if (off == end)
+               out.format("\" %s      // 0x%02x - 0x%02x%n", closure, off-8, off-1);
+            else
+               out.format("\" +      // 0x%02x - 0x%02x%n", off-8, off-1);
+        }
+    }
+
+    static Pattern sbmap = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(\\s++#.*)?");
+    private static int genB2C(InputStream in, StringBuilder out)
+        throws Exception
+    {
+        char[] sb = new char[0x100];
+        int[] indexC2B = new int[0x100];
+
+        for (int i = 0; i < sb.length; i++)
+            sb[i] = UNMAPPABLE_DECODING;
+
+        // parse the b2c mapping table
+        Parser p = new Parser(in, sbmap);
+        Entry  e = null;
+        int    off = 0;
+        while ((e = p.next()) != null) {
+            sb[e.bs] = (char)e.cp;
+            if (indexC2B[e.cp>>8] == 0) {
+                off += 0x100;
+                indexC2B[e.cp>>8] = 1;
+            }
+        }
+
+        Formatter fm = new Formatter(out);
+        fm.format("%n");
+
+        // vm -server shows cc[byte + 128] access is much faster than
+        // cc[byte&0xff] so we output the upper segment first
+        toString(sb, 0x80, 0x100, fm, "+");
+        toString(sb, 0x00, 0x80,  fm, ";");
+
+        fm.close();
+        return off;
+    }
+
+    // generate non-roundtrip entries from xxx.nr file
+    private static String genNR(InputStream in) throws Exception
+    {
+        StringBuilder sb = new StringBuilder();
+        Formatter fm = new Formatter(sb);
+        Parser p = new Parser(in, sbmap);
+        Entry  e = null;
+        fm.format("// remove non-roundtrip entries%n");
+        fm.format("        b2cMap = b2cTable.toCharArray();%n");
+        while ((e = p.next()) != null) {
+            fm.format("        b2cMap[%d] = UNMAPPABLE_DECODING;%n",
+                      (e.bs>=0x80)?(e.bs-0x80):(e.bs+0x80));
+        }
+        fm.close();
+        return sb.toString();
+    }
+
+    // generate c2b only entries from xxx.c2b file
+    private static String genC2BNR(InputStream in) throws Exception
+    {
+        StringBuilder sb = new StringBuilder();
+        Formatter fm = new Formatter(sb);
+        Parser p = new Parser(in, sbmap);
+        ArrayList<Entry> es = new ArrayList<Entry>();
+        Entry  e = null;
+        while ((e = p.next()) != null) {
+            es.add(e);
+        }
+
+        fm.format("// non-roundtrip c2b only entries%n");
+        fm.format("        c2bNR = new char[%d];%n", es.size() * 2);
+        int i = 0;
+        for (Entry entry: es) {
+            fm.format("        c2bNR[%d] = 0x%x; c2bNR[%d] = 0x%x;%n",
+                      i++, entry.bs, i++, entry.cp);
+        }
+        fm.close();
+        return sb.toString();
+    }
+
+    private static void genSBCSClass(String srcDir,
+                                     String dstDir,
+                                     String template,
+                                     String clzName,
+                                     String csName,
+                                     String hisName,
+                                     String pkgName,
+                                     boolean isASCII,
+                                     String b2c,
+                                     String b2cNR,
+                                     String c2bNR,
+                                     int    c2blen)
+        throws Exception
+    {
+        Scanner s = new Scanner(new File(srcDir, template));
+        PrintStream out = new PrintStream(new FileOutputStream(
+                              new File(dstDir, clzName + ".java")));
+
+        while (s.hasNextLine()) {
+            String line = s.nextLine();
+            int i = line.indexOf("$");
+            if (i == -1) {
+                out.println(line);
+                continue;
+            }
+            if (line.indexOf("$PACKAGE$", i) != -1) {
+                line = line.replace("$PACKAGE$", pkgName);
+            }
+            if (line.indexOf("$NAME_CLZ$", i) != -1) {
+                line = line.replace("$NAME_CLZ$", clzName);
+            }
+            if (line.indexOf("$NAME_CS$", i) != -1) {
+                line = line.replace("$NAME_CS$", csName);
+            }
+            if (line.indexOf("$NAME_ALIASES$", i) != -1) {
+                if ("sun.nio.cs".equals(pkgName))
+                    line = line.replace("$NAME_ALIASES$",
+                                        "StandardCharsets.aliases_" + clzName);
+                else
+                    line = line.replace("$NAME_ALIASES$",
+                                        "ExtendedCharsets.aliasesFor(\"" + csName + "\")");
+            }
+            if (line.indexOf("$NAME_HIS$", i) != -1) {
+                line = line.replace("$NAME_HIS$", hisName);
+            }
+            if (line.indexOf("$CONTAINS$", i) != -1) {
+                if (isASCII)
+                    line = "        return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));";
+                else
+                    line = "        return (cs instanceof " + clzName + ");";
+            }
+            if (line.indexOf("$B2CTABLE$") != -1) {
+                line = line.replace("$B2CTABLE$", b2c);
+            }
+            if (line.indexOf("$C2BLENGTH$") != -1) {
+                line = line.replace("$C2BLENGTH$", "0x" + Integer.toString(c2blen, 16));
+            }
+            if (line.indexOf("$NONROUNDTRIP_B2C$") != -1) {
+                if (b2cNR == null)
+                    continue;
+                line = line.replace("$NONROUNDTRIP_B2C$", b2cNR);
+            }
+
+            if (line.indexOf("$NONROUNDTRIP_C2B$") != -1) {
+                if (c2bNR == null)
+                    continue;
+                line = line.replace("$NONROUNDTRIP_C2B$", c2bNR);
+            }
+            out.println(line);
+        }
+        out.close();
+    }
+}
--- a/src/share/bin/main.c	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/bin/main.c	Thu Jan 29 18:33:52 2009 -0800
@@ -32,6 +32,43 @@
 
 #include "defines.h"
 
+#ifdef _MSC_VER
+#if _MSC_VER > 1400
+
+/*
+ * When building for Microsoft Windows, main has a dependency on msvcr??.dll.
+ *
+ * When using Visual Studio 2005 or later, that must be recorded in
+ * the [java,javaw].exe.manifest file.
+ *
+ * Reference:
+ *     C:/Program Files/Microsoft SDKs/Windows/v6.1/include/crtdefs.h
+ */
+#include <crtassem.h>
+#ifdef _M_IX86
+
+#pragma comment(linker,"/manifestdependency:\"type='win32' "            \
+        "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' "              \
+        "version='" _CRT_ASSEMBLY_VERSION "' "                          \
+        "processorArchitecture='x86' "                                  \
+        "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
+
+#endif /* _M_IX86 */
+
+//This may not be necessary yet for the Windows 64-bit build, but it
+//will be when that build environment is updated.  Need to test to see
+//if it is harmless:
+#ifdef _M_AMD64
+
+#pragma comment(linker,"/manifestdependency:\"type='win32' "            \
+        "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' "              \
+        "version='" _CRT_ASSEMBLY_VERSION "' "                          \
+        "processorArchitecture='amd64' "                                \
+        "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
+
+#endif  /* _M_AMD64 */
+#endif  /* _MSC_VER > 1400 */
+#endif  /* _MSC_VER */
 
 /*
  * Entry point.
--- a/src/share/classes/com/sun/java/swing/SwingUtilities3.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/java/swing/SwingUtilities3.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/com/sun/jmx/defaults/ServiceName.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/defaults/ServiceName.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -69,9 +69,9 @@
     /**
      * The version of the JMX specification implemented by this product.
      * <BR>
-     * The value is <CODE>1.4</CODE>.
+     * The value is <CODE>2.0</CODE>.
      */
-    public static final String JMX_SPEC_VERSION = "1.4";
+    public static final String JMX_SPEC_VERSION = "2.0";
 
     /**
      * The vendor of the JMX specification implemented by this product.
--- a/src/share/classes/com/sun/jmx/event/EventParams.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/event/EventParams.java	Thu Jan 29 18:33:52 2009 -0800
@@ -41,7 +41,7 @@
 
     @SuppressWarnings("cast") // cast for jdk 1.5
     public static long getLeaseTimeout() {
-        long timeout = EventClient.DEFAULT_LEASE_TIMEOUT;
+        long timeout = EventClient.DEFAULT_REQUESTED_LEASE_TIME;
         try {
             final GetPropertyAction act =
                   new GetPropertyAction(DEFAULT_LEASE_TIMEOUT);
--- a/src/share/classes/com/sun/jmx/event/LeaseManager.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/event/LeaseManager.java	Thu Jan 29 18:33:52 2009 -0800
@@ -29,6 +29,7 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -141,11 +142,12 @@
     }
 
     private final Runnable callback;
-    private ScheduledFuture scheduled;  // If null, the lease has expired.
+    private ScheduledFuture<?> scheduled;  // If null, the lease has expired.
 
+    private static final ThreadFactory threadFactory =
+            new DaemonThreadFactory("JMX LeaseManager %d");
     private final ScheduledExecutorService executor
-            = Executors.newScheduledThreadPool(1,
-            new DaemonThreadFactory("JMX LeaseManager %d"));
+            = Executors.newScheduledThreadPool(1, threadFactory);
 
     private static final ClassLogger logger =
             new ClassLogger("javax.management.event", "LeaseManager");
--- a/src/share/classes/com/sun/jmx/event/LeaseRenewer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/event/LeaseRenewer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -128,7 +128,7 @@
     };
 
     private final Callable<Long> doRenew;
-    private ScheduledFuture future;
+    private ScheduledFuture<?> future;
     private boolean closed = false;
     private long nextRenewTime;
 
--- a/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -70,6 +70,7 @@
 import javax.management.ListenerNotFoundException;
 import javax.management.MBeanException;
 import javax.management.MBeanInfo;
+import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanPermission;
 import javax.management.MBeanRegistration;
 import javax.management.MBeanRegistrationException;
@@ -247,7 +248,7 @@
                MBeanRegistrationException, MBeanException,
                NotCompliantMBeanException, InstanceNotFoundException {
 
-        Class theClass;
+        Class<?> theClass;
 
         if (className == null) {
             final RuntimeException wrapped =
@@ -327,7 +328,7 @@
 
         // ------------------------------
         // ------------------------------
-        Class theClass = object.getClass();
+        Class<?> theClass = object.getClass();
 
         Introspector.checkCompliance(theClass);
 
@@ -808,9 +809,8 @@
             // on each specific attribute
             //
             allowedAttributes = new AttributeList(attributes.size());
-            for (Iterator i = attributes.iterator(); i.hasNext();) {
+            for (Attribute attribute : attributes.asList()) {
                 try {
-                    Attribute attribute = (Attribute) i.next();
                     checkMBeanPermission(mbeanServerName, classname, attribute.getName(),
                                          name, "setAttribute");
                     allowedAttributes.add(attribute);
@@ -919,6 +919,12 @@
 
         DynamicMBean mbean = Introspector.makeDynamicMBean(object);
 
+        //Access the ObjectName template value only if the provided name is null
+        if(name == null) {
+            name = Introspector.templateToObjectName(mbean.getMBeanInfo().
+                    getDescriptor(), mbean);
+        }
+
         return registerDynamicMBean(classname, mbean, name);
     }
 
@@ -1046,8 +1052,10 @@
             Object resource = getResource(mbean);
             MBeanInjector.inject(resource, mbs, name);
             if (MBeanInjector.injectsSendNotification(resource)) {
+                MBeanNotificationInfo[] mbnis =
+                        mbean.getMBeanInfo().getNotifications();
                 NotificationBroadcasterSupport nbs =
-                        new NotificationBroadcasterSupport();
+                        new NotificationBroadcasterSupport(mbnis);
                 MBeanInjector.injectSendNotification(resource, nbs);
                 mbean = NotifySupport.wrap(mbean, nbs);
             }
@@ -1857,7 +1865,7 @@
         }
     }
 
-    private static void checkMBeanTrustPermission(final Class theClass)
+    private static void checkMBeanTrustPermission(final Class<?> theClass)
         throws SecurityException {
         SecurityManager sm = System.getSecurityManager();
         if (sm != null) {
--- a/src/share/classes/com/sun/jmx/interceptor/DispatchInterceptor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/interceptor/DispatchInterceptor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -44,7 +44,6 @@
 import javax.management.MBeanInfo;
 import javax.management.MBeanRegistrationException;
 import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
 import javax.management.NotCompliantMBeanException;
 import javax.management.NotificationFilter;
 import javax.management.NotificationListener;
@@ -205,8 +204,7 @@
 
     // Returns the ObjectName of the JMXNamespace (or JMXDomain) for that
     // key (a namespace or a domain name).
-    abstract ObjectName getHandlerNameFor(String key)
-        throws MalformedObjectNameException;
+    abstract ObjectName getHandlerNameFor(String key);
 
     // Creates an interceptor for the given key, name, JMXNamespace (or
     // JMXDomain). Note: this will be either a NamespaceInterceptor
@@ -263,14 +261,10 @@
     void validateHandlerNameFor(String key, ObjectName name) {
         if (key == null || key.equals(""))
             throw new IllegalArgumentException("invalid key for "+name+": "+key);
-        try {
-            final ObjectName handlerName = getHandlerNameFor(key);
-            if (!name.equals(handlerName))
-                throw new IllegalArgumentException("bad handler name: "+name+
-                        ". Should be: "+handlerName);
-        } catch (MalformedObjectNameException x) {
-            throw new IllegalArgumentException(name.toString(),x);
-        }
+        final ObjectName handlerName = getHandlerNameFor(key);
+        if (!name.equals(handlerName))
+            throw new IllegalArgumentException("bad handler name: "+name+
+                    ". Should be: "+handlerName);
     }
 
     // Called by the DefaultMBeanServerInterceptor when an instance
--- a/src/share/classes/com/sun/jmx/interceptor/DomainDispatchInterceptor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/interceptor/DomainDispatchInterceptor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -38,7 +38,6 @@
 
 import javax.management.MBeanServer;
 import javax.management.MBeanServerDelegate;
-import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.management.QueryExp;
 import javax.management.namespace.JMXDomain;
@@ -248,21 +247,17 @@
         if (pattern == null) return true;
         if (pattern.isDomainPattern()) return true;
 
-        try {
-            // case b) above.
-            //
-            // This is a bit of a hack. If there's any chance that a JMXDomain
-            // MBean name is selected by the given pattern then we must include
-            // the local namespace in our search.
-            //
-            // Returning true will have this effect. see 2. above.
-            //
-            if (pattern.apply(ALL_DOMAINS.withDomain(pattern.getDomain())))
-                return true;
-        } catch (MalformedObjectNameException x) {
-            // should not happen
-            throw new IllegalArgumentException(String.valueOf(pattern), x);
-        }
+        // case b) above.
+        //
+        // This is a bit of a hack. If there's any chance that a JMXDomain
+        // MBean name is selected by the given pattern then we must include
+        // the local namespace in our search.
+        //
+        // Returning true will have this effect. see 2. above.
+        //
+        if (pattern.apply(ALL_DOMAINS.withDomain(pattern.getDomain())))
+            return true;
+
         return false;
     }
 
@@ -291,8 +286,7 @@
     }
 
     @Override
-    final ObjectName getHandlerNameFor(String key)
-        throws MalformedObjectNameException {
+    final ObjectName getHandlerNameFor(String key) {
         return JMXDomain.getDomainObjectName(key);
     }
 
--- a/src/share/classes/com/sun/jmx/interceptor/NamespaceDispatchInterceptor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/interceptor/NamespaceDispatchInterceptor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -37,8 +37,8 @@
 
 import javax.management.MBeanServer;
 import javax.management.MBeanServerDelegate;
-import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
+import javax.management.RuntimeOperationsException;
 import javax.management.namespace.JMXDomain;
 import javax.management.namespace.JMXNamespace;
 import static javax.management.namespace.JMXNamespaces.NAMESPACE_SEPARATOR;
@@ -60,6 +60,7 @@
 
     private static final int NAMESPACE_SEPARATOR_LENGTH =
             NAMESPACE_SEPARATOR.length();
+    private static final ObjectName X3 = ObjectName.valueOf("x:x=x");
 
     private final DomainDispatchInterceptor nextInterceptor;
     private final String           serverName;
@@ -89,27 +90,38 @@
            serverName = Util.getMBeanServerSecurityName(delegate);
     }
 
-    // TODO: Should move that to JMXNamespace? or to ObjectName?
     /**
      * Get first name space in ObjectName path. Ignore leading namespace
-     * separators.
+     * separators. Includes the trailing //.
+     *
+     * Examples:
+     * <pre>
+     *  For ObjectName:                   Returns:
+     *  foo//bar//baz:x=x         ->      "foo//"
+     *  foo//:type=JMXNamespace   ->      "foo//"
+     *  foo//:x=x                 ->      "foo//"
+     *  foo////:x=x               ->      "foo//"
+     *  //foo//bar//baz:x=x       ->      "//"
+     *  ////foo//bar//baz:x=x     ->      "//"
+     *  //:x=x                    ->      "//"
+     *  foo:x=x                   ->      ""
+     *  (null)                    ->      ""
+     *  :x=x                      ->      ""
+     *
+     * </pre>
      **/
-    static String getFirstNamespace(ObjectName name) {
+    static String getFirstNamespaceWithSlash(ObjectName name) {
         if (name == null) return "";
         final String domain = name.getDomain();
         if (domain.equals("")) return "";
 
-        // skip leading separators
-        int first = 0;
-        while (domain.startsWith(NAMESPACE_SEPARATOR,first))
-            first += NAMESPACE_SEPARATOR_LENGTH;
-
         // go to next separator
-        final int end = domain.indexOf(NAMESPACE_SEPARATOR,first);
+        final int end = domain.indexOf(NAMESPACE_SEPARATOR);
         if (end == -1) return ""; // no namespace
 
         // This is the first element in the namespace path.
-        final String namespace = domain.substring(first,end);
+        final String namespace =
+                domain.substring(0,end+NAMESPACE_SEPARATOR_LENGTH);
 
         return namespace;
     }
@@ -130,27 +142,49 @@
                     resource.getClass().getName());
     }
 
-    final boolean isLocalHandlerNameFor(String namespace,
-            ObjectName handlerName) {
-        return handlerName.getDomain().equals(namespace+NAMESPACE_SEPARATOR) &&
-               JMXNamespace.TYPE_ASSIGNMENT.equals(
-               handlerName.getKeyPropertyListString());
+    // Removes the trailing //. namespaceWithSlash should be either
+    // "" or a namespace path ending with //.
+    //
+    private final String getKeyFor(String namespaceWithSlash) {
+        final int end = namespaceWithSlash.length() -
+                NAMESPACE_SEPARATOR_LENGTH;
+        if (end <= 0) return "";
+        final String key = namespaceWithSlash.substring(0,end);
+        return key;
     }
 
     @Override
     final MBeanServer getInterceptorOrNullFor(ObjectName name) {
-        final String namespace = getFirstNamespace(name);
-        if (namespace.equals("") || isLocalHandlerNameFor(namespace,name) ||
-            name.getDomain().equals(namespace+NAMESPACE_SEPARATOR)) {
+        final String namespace = getFirstNamespaceWithSlash(name);
+
+        // Leading separators should trigger instance not found exception.
+        // returning null here has this effect.
+        //
+        if (namespace.equals(NAMESPACE_SEPARATOR)) {
+            LOG.finer("ObjectName starts with: "+namespace);
+            return null;
+        }
+
+        // namespace="" means that there was no namespace path in the
+        //   ObjectName. => delegate to the next interceptor (local MBS)
+        // name.getDomain()=namespace means that we have an ObjectName of
+        //   the form blah//:x=x. This is either a JMXNamespace or a non
+        //   existent MBean. => delegate to the next interceptor (local MBS)
+        if (namespace.equals("") || name.getDomain().equals(namespace)) {
             LOG.finer("dispatching to local name space");
             return nextInterceptor;
         }
-        final NamespaceInterceptor ns = getInterceptor(namespace);
+
+        // There was a namespace path in the ObjectName. Returns the
+        // interceptor that handles it, or null if there is no such
+        // interceptor.
+        final String key = getKeyFor(namespace);
+        final NamespaceInterceptor ns = getInterceptor(key);
         if (LOG.isLoggable(Level.FINER)) {
             if (ns != null) {
-                LOG.finer("dispatching to name space: " + namespace);
+                LOG.finer("dispatching to name space: " + key);
             } else {
-                LOG.finer("no handler for: " + namespace);
+                LOG.finer("no handler for: " + key);
             }
         }
         return ns;
@@ -158,18 +192,44 @@
 
     @Override
     final QueryInterceptor getInterceptorForQuery(ObjectName pattern) {
-        final String namespace = getFirstNamespace(pattern);
-        if (namespace.equals("") || isLocalHandlerNameFor(namespace,pattern) ||
-            pattern.getDomain().equals(namespace+NAMESPACE_SEPARATOR)) {
+        final String namespace = getFirstNamespaceWithSlash(pattern);
+
+        // Leading separators should trigger instance not found exception.
+        // returning null here has this effect.
+        //
+        if (namespace.equals(NAMESPACE_SEPARATOR)) {
+            LOG.finer("ObjectName starts with: "+namespace);
+            return null;
+        }
+
+        // namespace="" means that there was no namespace path in the
+        //   ObjectName. => delegate to the next interceptor (local MBS)
+        // name.getDomain()=namespace means that we have an ObjectName of
+        //   the form blah//:x=x. This is either a JMXNamespace or a non
+        //   existent MBean. => delegate to the next interceptor (local MBS)
+        if (namespace.equals("") || pattern.getDomain().equals(namespace)) {
             LOG.finer("dispatching to local name space");
             return new QueryInterceptor(nextInterceptor);
         }
-        final NamespaceInterceptor ns = getInterceptor(namespace);
+
+        // This is a 'hack' to check whether the first namespace is a pattern.
+        // We wan to throw RTOE wrapping IAE in that case
+        if (X3.withDomain(namespace).isDomainPattern()) {
+            throw new RuntimeOperationsException(
+                new IllegalArgumentException("Pattern not allowed in namespace path"));
+        }
+
+        // There was a namespace path in the ObjectName. Returns the
+        // interceptor that handles it, or null if there is no such
+        // interceptor.
+        //
+        final String key = getKeyFor(namespace);
+        final NamespaceInterceptor ns = getInterceptor(key);
         if (LOG.isLoggable(Level.FINER)) {
             if (ns != null) {
-                LOG.finer("dispatching to name space: " + namespace);
+                LOG.finer("dispatching to name space: " + key);
             } else {
-                LOG.finer("no handler for: " + namespace);
+                LOG.finer("no handler for: " + key);
             }
         }
         if (ns == null) return null;
@@ -177,15 +237,16 @@
     }
 
     @Override
-    final ObjectName getHandlerNameFor(String key)
-        throws MalformedObjectNameException {
-        return ObjectName.getInstance(key+NAMESPACE_SEPARATOR,
+    final ObjectName getHandlerNameFor(String key) {
+        return ObjectName.valueOf(key+NAMESPACE_SEPARATOR,
                     "type", JMXNamespace.TYPE);
     }
 
     @Override
     final public String getHandlerKey(ObjectName name) {
-        return getFirstNamespace(name);
+        final String namespace = getFirstNamespaceWithSlash(name);
+        // namespace is either "" or a namespace ending with //
+        return getKeyFor(namespace);
     }
 
     @Override
--- a/src/share/classes/com/sun/jmx/interceptor/SingleMBeanForwarder.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/interceptor/SingleMBeanForwarder.java	Thu Jan 29 18:33:52 2009 -0800
@@ -55,9 +55,19 @@
 import javax.management.namespace.MBeanServerSupport;
 import javax.management.remote.IdentityMBeanServerForwarder;
 
+/**
+ * <p>An {@link MBeanServerForwarder} that simulates the existence of a
+ * given MBean.  Requests for that MBean, call it X, are intercepted by the
+ * forwarder, and requests for any other MBean are forwarded to the next
+ * forwarder in the chain.  Requests such as queryNames which can span both the
+ * X and other MBeans are handled by merging the results for X with the results
+ * from the next forwarder, unless the "visible" parameter is false, in which
+ * case X is invisible to such requests.</p>
+ */
 public class SingleMBeanForwarder extends IdentityMBeanServerForwarder {
 
     private final ObjectName mbeanName;
+    private final boolean visible;
     private DynamicMBean mbean;
 
     private MBeanServer mbeanMBS = new MBeanServerSupport() {
@@ -85,10 +95,20 @@
             return null;
         }
 
+        // This will only be called if mbeanName has an empty domain.
+        // In that case a getAttribute (e.g.) of that name will have the
+        // domain replaced by MBeanServerSupport with the default domain,
+        // so we must be sure that the default domain is empty too.
+        @Override
+        public String getDefaultDomain() {
+            return mbeanName.getDomain();
+        }
     };
 
-    public SingleMBeanForwarder(ObjectName mbeanName, DynamicMBean mbean) {
+    public SingleMBeanForwarder(
+            ObjectName mbeanName, DynamicMBean mbean, boolean visible) {
         this.mbeanName = mbeanName;
+        this.visible = visible;
         setSingleMBean(mbean);
     }
 
@@ -213,8 +233,10 @@
 
     @Override
     public String[] getDomains() {
-        TreeSet<String> domainSet =
-                new TreeSet<String>(Arrays.asList(super.getDomains()));
+        String[] domains = super.getDomains();
+        if (!visible)
+            return domains;
+        TreeSet<String> domainSet = new TreeSet<String>(Arrays.asList(domains));
         domainSet.add(mbeanName.getDomain());
         return domainSet.toArray(new String[domainSet.size()]);
     }
@@ -222,7 +244,7 @@
     @Override
     public Integer getMBeanCount() {
         Integer count = super.getMBeanCount();
-        if (!super.isRegistered(mbeanName))
+        if (visible && !super.isRegistered(mbeanName))
             count++;
         return count;
     }
@@ -284,7 +306,7 @@
      */
     private boolean applies(ObjectName pattern) {
         // we know pattern is not null.
-        if (!pattern.apply(mbeanName))
+        if (!visible || !pattern.apply(mbeanName))
             return false;
 
         final String dompat = pattern.getDomain();
@@ -306,10 +328,12 @@
     @Override
     public Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query) {
         Set<ObjectInstance> names = super.queryMBeans(name, query);
-        if (name == null || applies(name) ) {
-            // Don't assume mbs.queryNames returns a writable set.
-            names = Util.cloneSet(names);
-            names.addAll(mbeanMBS.queryMBeans(name, query));
+        if (visible) {
+            if (name == null || applies(name) ) {
+                // Don't assume mbs.queryNames returns a writable set.
+                names = Util.cloneSet(names);
+                names.addAll(mbeanMBS.queryMBeans(name, query));
+            }
         }
         return names;
     }
@@ -317,10 +341,12 @@
     @Override
     public Set<ObjectName> queryNames(ObjectName name, QueryExp query) {
         Set<ObjectName> names = super.queryNames(name, query);
-        if (name == null || applies(name)) {
-            // Don't assume mbs.queryNames returns a writable set.
-            names = Util.cloneSet(names);
-            names.addAll(mbeanMBS.queryNames(name, query));
+        if (visible) {
+            if (name == null || applies(name)) {
+                // Don't assume mbs.queryNames returns a writable set.
+                names = Util.cloneSet(names);
+                names.addAll(mbeanMBS.queryNames(name, query));
+            }
         }
         return names;
     }
--- a/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
@@ -136,14 +136,14 @@
         new Hashtable<ObjectName,ClassLoader>(10);
 
     // from javax.management.loading.DefaultLoaderRepository
-    public final Class loadClass(String className)
+    public final Class<?> loadClass(String className)
         throws ClassNotFoundException {
         return  loadClass(loaders, className, null, null);
     }
 
 
     // from javax.management.loading.DefaultLoaderRepository
-    public final Class loadClassWithout(ClassLoader without, String className)
+    public final Class<?> loadClassWithout(ClassLoader without, String className)
             throws ClassNotFoundException {
         if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
             MBEANSERVER_LOGGER.logp(Level.FINER,
@@ -167,7 +167,7 @@
     }
 
 
-    public final Class loadClassBefore(ClassLoader stop, String className)
+    public final Class<?> loadClassBefore(ClassLoader stop, String className)
             throws ClassNotFoundException {
         if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
             MBEANSERVER_LOGGER.logp(Level.FINER,
@@ -187,10 +187,10 @@
     }
 
 
-    private Class loadClass(final LoaderEntry list[],
-                            final String className,
-                            final ClassLoader without,
-                            final ClassLoader stop)
+    private Class<?> loadClass(final LoaderEntry list[],
+                               final String className,
+                               final ClassLoader without,
+                               final ClassLoader stop)
             throws ClassNotFoundException {
         final int size = list.length;
         for(int i=0; i<size; i++) {
--- a/src/share/classes/com/sun/jmx/mbeanserver/ConvertingMethod.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/ConvertingMethod.java	Thu Jan 29 18:33:52 2009 -0800
@@ -53,7 +53,7 @@
     }
 
     Descriptor getDescriptor() {
-        return Introspector.descriptorForElement(method);
+        return Introspector.descriptorForElement(method, false);
     }
 
     Type getGenericReturnType() {
@@ -68,12 +68,12 @@
         return method.getName();
     }
 
-    OpenType getOpenReturnType() {
+    OpenType<?> getOpenReturnType() {
         return returnMapping.getOpenType();
     }
 
-    OpenType[] getOpenParameterTypes() {
-        final OpenType[] types = new OpenType[paramMappings.length];
+    OpenType<?>[] getOpenParameterTypes() {
+        final OpenType<?>[] types = new OpenType<?>[paramMappings.length];
         for (int i = 0; i < paramMappings.length; i++)
             types[i] = paramMappings[i].getOpenType();
         return types;
--- a/src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java	Thu Jan 29 18:33:52 2009 -0800
@@ -26,7 +26,8 @@
 package com.sun.jmx.mbeanserver;
 
 import static com.sun.jmx.mbeanserver.Util.*;
-import java.lang.annotation.ElementType;
+import static com.sun.jmx.mbeanserver.MXBeanIntrospector.typeName;
+
 import javax.management.openmbean.MXBeanMappingClass;
 
 import static javax.management.openmbean.SimpleType.*;
@@ -120,7 +121,7 @@
  */
 public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
     static abstract class NonNullMXBeanMapping extends MXBeanMapping {
-        NonNullMXBeanMapping(Type javaType, OpenType openType) {
+        NonNullMXBeanMapping(Type javaType, OpenType<?> openType) {
             super(javaType, openType);
         }
 
@@ -195,15 +196,15 @@
     static {
         /* Set up the mappings for Java types that map to SimpleType.  */
 
-        final OpenType[] simpleTypes = {
+        final OpenType<?>[] simpleTypes = {
             BIGDECIMAL, BIGINTEGER, BOOLEAN, BYTE, CHARACTER, DATE,
             DOUBLE, FLOAT, INTEGER, LONG, OBJECTNAME, SHORT, STRING,
             VOID,
         };
 
         for (int i = 0; i < simpleTypes.length; i++) {
-            final OpenType t = simpleTypes[i];
-            Class c;
+            final OpenType<?> t = simpleTypes[i];
+            Class<?> c;
             try {
                 c = Class.forName(t.getClassName(), false,
                                   ObjectName.class.getClassLoader());
@@ -224,7 +225,7 @@
                     if (primitiveType != void.class) {
                         final Class<?> primitiveArrayType =
                             Array.newInstance(primitiveType, 0).getClass();
-                        final OpenType primitiveArrayOpenType =
+                        final OpenType<?> primitiveArrayOpenType =
                             ArrayType.getPrimitiveArrayType(primitiveArrayType);
                         final MXBeanMapping primitiveArrayMapping =
                             new IdentityMapping(primitiveArrayType,
@@ -247,8 +248,10 @@
     public synchronized MXBeanMapping mappingForType(Type objType,
                                                      MXBeanMappingFactory factory)
             throws OpenDataException {
-        if (inProgress.containsKey(objType))
-            throw new OpenDataException("Recursive data structure");
+        if (inProgress.containsKey(objType)) {
+            throw new OpenDataException(
+                    "Recursive data structure, including " + typeName(objType));
+        }
 
         MXBeanMapping mapping;
 
@@ -259,6 +262,8 @@
         inProgress.put(objType, objType);
         try {
             mapping = makeMapping(objType, factory);
+        } catch (OpenDataException e) {
+            throw openDataException("Cannot convert type: " + typeName(objType), e);
         } finally {
             inProgress.remove(objType);
         }
@@ -285,13 +290,13 @@
             Type componentType =
                 ((GenericArrayType) objType).getGenericComponentType();
             return makeArrayOrCollectionMapping(objType, componentType, factory);
-        } else if (objType instanceof Class) {
+        } else if (objType instanceof Class<?>) {
             Class<?> objClass = (Class<?>) objType;
             if (objClass.isEnum()) {
                 // Huge hack to avoid compiler warnings here.  The ElementType
                 // parameter is ignored but allows us to obtain a type variable
                 // T that matches <T extends Enum<T>>.
-                return makeEnumMapping((Class) objClass, ElementType.class);
+                return makeEnumMapping((Class<?>) objClass, ElementType.class);
             } else if (objClass.isArray()) {
                 Type componentType = objClass.getComponentType();
                 return makeArrayOrCollectionMapping(objClass, componentType,
@@ -354,7 +359,7 @@
     }
 
     private static <T extends Enum<T>> MXBeanMapping
-            makeEnumMapping(Class enumClass, Class<T> fake) {
+            makeEnumMapping(Class<?> enumClass, Class<T> fake) {
         return new EnumMapping<T>(Util.<Class<T>>cast(enumClass));
     }
 
@@ -411,17 +416,17 @@
                            MXBeanMappingFactory factory)
             throws OpenDataException {
 
-        final String objTypeName = objType.toString();
+        final String objTypeName = typeName(objType);
         final MXBeanMapping keyMapping = factory.mappingForType(keyType, factory);
         final MXBeanMapping valueMapping = factory.mappingForType(valueType, factory);
-        final OpenType keyOpenType = keyMapping.getOpenType();
-        final OpenType valueOpenType = valueMapping.getOpenType();
+        final OpenType<?> keyOpenType = keyMapping.getOpenType();
+        final OpenType<?> valueOpenType = valueMapping.getOpenType();
         final CompositeType rowType =
             new CompositeType(objTypeName,
                               objTypeName,
                               keyValueArray,
                               keyValueArray,
-                              new OpenType[] {keyOpenType, valueOpenType});
+                              new OpenType<?>[] {keyOpenType, valueOpenType});
         final TabularType tabularType =
             new TabularType(objTypeName, objTypeName, rowType, keyArray);
         return new TabularMapping(objType, sortedMap, tabularType,
@@ -440,8 +445,8 @@
 
         final Type rawType = objType.getRawType();
 
-        if (rawType instanceof Class) {
-            Class c = (Class<?>) rawType;
+        if (rawType instanceof Class<?>) {
+            Class<?> c = (Class<?>) rawType;
             if (c == List.class || c == Set.class || c == SortedSet.class) {
                 Type[] actuals = objType.getActualTypeArguments();
                 assert(actuals.length == 1);
@@ -468,7 +473,7 @@
         return new MXBeanRefMapping(t);
     }
 
-    private MXBeanMapping makeCompositeMapping(Class c,
+    private MXBeanMapping makeCompositeMapping(Class<?> c,
                                                MXBeanMappingFactory factory)
             throws OpenDataException {
 
@@ -514,7 +519,7 @@
 
         final Method[] getters = new Method[nitems];
         final String[] itemNames = new String[nitems];
-        final OpenType[] openTypes = new OpenType[nitems];
+        final OpenType<?>[] openTypes = new OpenType<?>[nitems];
         int i = 0;
         for (Map.Entry<String,Method> entry : getterMap.entrySet()) {
             itemNames[i] = entry.getKey();
@@ -546,7 +551,7 @@
        can be directly represented by an ArrayType, and an int needs no mapping
        because reflection takes care of it.  */
     private static final class IdentityMapping extends NonNullMXBeanMapping {
-        IdentityMapping(Type targetType, OpenType openType) {
+        IdentityMapping(Type targetType, OpenType<?> openType) {
             super(targetType, openType);
         }
 
@@ -576,7 +581,7 @@
 
         @Override
         final Object toNonNullOpenValue(Object value) {
-            return ((Enum) value).name();
+            return ((Enum<?>) value).name();
         }
 
         @Override
@@ -595,7 +600,7 @@
 
     private static final class ArrayMapping extends NonNullMXBeanMapping {
         ArrayMapping(Type targetType,
-                     ArrayType openArrayType, Class openArrayClass,
+                     ArrayType<?> openArrayType, Class<?> openArrayClass,
                      MXBeanMapping elementMapping) {
             super(targetType, openArrayType);
             this.elementMapping = elementMapping;
@@ -623,7 +628,7 @@
             if (javaType instanceof GenericArrayType) {
                 componentType =
                     ((GenericArrayType) javaType).getGenericComponentType();
-            } else if (javaType instanceof Class &&
+            } else if (javaType instanceof Class<?> &&
                        ((Class<?>) javaType).isArray()) {
                 componentType = ((Class<?>) javaType).getComponentType();
             } else {
@@ -651,8 +656,8 @@
 
     private static final class CollectionMapping extends NonNullMXBeanMapping {
         CollectionMapping(Type targetType,
-                          ArrayType openArrayType,
-                          Class openArrayClass,
+                          ArrayType<?> openArrayType,
+                          Class<?> openArrayClass,
                           MXBeanMapping elementMapping) {
             super(targetType, openArrayType);
             this.elementMapping = elementMapping;
@@ -662,26 +667,28 @@
                and all Sets to TreeSet.  (TreeSet because it is a SortedSet,
                so works for both Set and SortedSet.)  */
             Type raw = ((ParameterizedType) targetType).getRawType();
-            Class c = (Class<?>) raw;
+            Class<?> c = (Class<?>) raw;
+            final Class<?> collC;
             if (c == List.class)
-                collectionClass = ArrayList.class;
+                collC = ArrayList.class;
             else if (c == Set.class)
-                collectionClass = HashSet.class;
+                collC = HashSet.class;
             else if (c == SortedSet.class)
-                collectionClass = TreeSet.class;
+                collC = TreeSet.class;
             else { // can't happen
                 assert(false);
-                collectionClass = null;
+                collC = null;
             }
+            collectionClass = Util.cast(collC);
         }
 
         @Override
         final Object toNonNullOpenValue(Object value)
                 throws OpenDataException {
-            final Collection valueCollection = (Collection) value;
-            if (valueCollection instanceof SortedSet) {
-                Comparator comparator =
-                    ((SortedSet) valueCollection).comparator();
+            final Collection<?> valueCollection = (Collection<?>) value;
+            if (valueCollection instanceof SortedSet<?>) {
+                Comparator<?> comparator =
+                    ((SortedSet<?>) valueCollection).comparator();
                 if (comparator != null) {
                     final String msg =
                         "Cannot convert SortedSet with non-null comparator: " +
@@ -725,7 +732,7 @@
             elementMapping.checkReconstructible();
         }
 
-        private final Class<? extends Collection> collectionClass;
+        private final Class<? extends Collection<?>> collectionClass;
         private final MXBeanMapping elementMapping;
     }
 
@@ -794,8 +801,8 @@
         @Override
         final Object toNonNullOpenValue(Object value) throws OpenDataException {
             final Map<Object, Object> valueMap = cast(value);
-            if (valueMap instanceof SortedMap) {
-                Comparator comparator = ((SortedMap) valueMap).comparator();
+            if (valueMap instanceof SortedMap<?,?>) {
+                Comparator<?> comparator = ((SortedMap<?,?>) valueMap).comparator();
                 if (comparator != null) {
                     final String msg =
                         "Cannot convert SortedMap with non-null comparator: " +
@@ -806,7 +813,7 @@
             final TabularType tabularType = (TabularType) getOpenType();
             final TabularData table = new TabularDataSupport(tabularType);
             final CompositeType rowType = tabularType.getRowType();
-            for (Map.Entry entry : valueMap.entrySet()) {
+            for (Map.Entry<Object, Object> entry : valueMap.entrySet()) {
                 final Object openKey = keyMapping.toOpenValue(entry.getKey());
                 final Object openValue = valueMapping.toOpenValue(entry.getValue());
                 final CompositeData row;
@@ -852,7 +859,7 @@
     }
 
     private final class CompositeMapping extends NonNullMXBeanMapping {
-        CompositeMapping(Class targetClass,
+        CompositeMapping(Class<?> targetClass,
                          CompositeType compositeType,
                          String[] itemNames,
                          Method[] getters,
@@ -901,7 +908,7 @@
             if (compositeBuilder != null)
                 return;
 
-            Class targetClass = (Class<?>) getJavaType();
+            Class<?> targetClass = (Class<?>) getJavaType();
             /* In this 2D array, each subarray is a set of builders where
                there is no point in consulting the ones after the first if
                the first refuses.  */
@@ -924,6 +931,7 @@
                concatenating each Builder's explanation of why it
                isn't applicable.  */
             final StringBuilder whyNots = new StringBuilder();
+            Throwable possibleCause = null;
         find:
             for (CompositeBuilder[] relatedBuilders : builders) {
                 for (int i = 0; i < relatedBuilders.length; i++) {
@@ -933,6 +941,9 @@
                         foundBuilder = builder;
                         break find;
                     }
+                    Throwable cause = builder.possibleCause();
+                    if (cause != null)
+                        possibleCause = cause;
                     if (whyNot.length() > 0) {
                         if (whyNots.length() > 0)
                             whyNots.append("; ");
@@ -943,10 +954,12 @@
                 }
             }
             if (foundBuilder == null) {
-                final String msg =
+                String msg =
                     "Do not know how to make a " + targetClass.getName() +
                     " from a CompositeData: " + whyNots;
-                throw new InvalidObjectException(msg);
+                if (possibleCause != null)
+                    msg += ". Remaining exceptions show a POSSIBLE cause.";
+                throw invalidObjectException(msg, possibleCause);
             }
             compositeBuilder = foundBuilder;
         }
@@ -973,7 +986,7 @@
 
     /** Converts from a CompositeData to an instance of the targetClass.  */
     private static abstract class CompositeBuilder {
-        CompositeBuilder(Class targetClass, String[] itemNames) {
+        CompositeBuilder(Class<?> targetClass, String[] itemNames) {
             this.targetClass = targetClass;
             this.itemNames = itemNames;
         }
@@ -994,6 +1007,16 @@
         abstract String applicable(Method[] getters)
                 throws InvalidObjectException;
 
+        /** If the subclass returns an explanation of why it is not applicable,
+            it can additionally indicate an exception with details.  This is
+            potentially confusing, because the real problem could be that one
+            of the other subclasses is supposed to be applicable but isn't.
+            But the advantage of less information loss probably outweighs the
+            disadvantage of possible confusion.  */
+        Throwable possibleCause() {
+            return null;
+        }
+
         abstract Object fromCompositeData(CompositeData cd,
                                           String[] itemNames,
                                           MXBeanMapping[] converters)
@@ -1008,7 +1031,7 @@
     private static final class CompositeBuilderViaFrom
             extends CompositeBuilder {
 
-        CompositeBuilderViaFrom(Class targetClass, String[] itemNames) {
+        CompositeBuilderViaFrom(Class<?> targetClass, String[] itemNames) {
             super(targetClass, itemNames);
         }
 
@@ -1018,8 +1041,7 @@
             Class<?> targetClass = getTargetClass();
             try {
                 Method fromMethod =
-                    targetClass.getMethod("from",
-                                          new Class[] {CompositeData.class});
+                    targetClass.getMethod("from", CompositeData.class);
 
                 if (!Modifier.isStatic(fromMethod.getModifiers())) {
                     final String msg =
@@ -1030,8 +1052,8 @@
                 if (fromMethod.getReturnType() != getTargetClass()) {
                     final String msg =
                         "Method from(CompositeData) returns " +
-                        fromMethod.getReturnType().getName() +
-                        " not " + targetClass.getName();
+                        typeName(fromMethod.getReturnType()) +
+                        " not " + typeName(targetClass);
                     throw new InvalidObjectException(msg);
                 }
 
@@ -1071,7 +1093,7 @@
         If all the getters are OK, then the "applicable" method will return
         an empty string and the other builders will be tried.  */
     private static class CompositeBuilderCheckGetters extends CompositeBuilder {
-        CompositeBuilderCheckGetters(Class targetClass, String[] itemNames,
+        CompositeBuilderCheckGetters(Class<?> targetClass, String[] itemNames,
                                      MXBeanMapping[] getterConverters) {
             super(targetClass, itemNames);
             this.getterConverters = getterConverters;
@@ -1082,6 +1104,7 @@
                 try {
                     getterConverters[i].checkReconstructible();
                 } catch (InvalidObjectException e) {
+                    possibleCause = e;
                     return "method " + getters[i].getName() + " returns type " +
                         "that cannot be mapped back from OpenData";
                 }
@@ -1089,6 +1112,11 @@
             return "";
         }
 
+        @Override
+        Throwable possibleCause() {
+            return possibleCause;
+        }
+
         final Object fromCompositeData(CompositeData cd,
                                        String[] itemNames,
                                        MXBeanMapping[] converters) {
@@ -1096,6 +1124,7 @@
         }
 
         private final MXBeanMapping[] getterConverters;
+        private Throwable possibleCause;
     }
 
     /** Builder for when the target class has a setter for every getter. */
@@ -1115,7 +1144,7 @@
             Method[] setters = new Method[getters.length];
             for (int i = 0; i < getters.length; i++) {
                 Method getter = getters[i];
-                Class returnType = getter.getReturnType();
+                Class<?> returnType = getter.getReturnType();
                 String name = propertyName(getter);
                 String setterName = "set" + name;
                 Method setter;
@@ -1163,7 +1192,7 @@
     private static final class CompositeBuilderViaConstructor
             extends CompositeBuilder {
 
-        CompositeBuilderViaConstructor(Class targetClass, String[] itemNames) {
+        CompositeBuilderViaConstructor(Class<?> targetClass, String[] itemNames) {
             super(targetClass, itemNames);
         }
 
@@ -1171,7 +1200,7 @@
 
             final Class<ConstructorProperties> propertyNamesClass = ConstructorProperties.class;
 
-            Class targetClass = getTargetClass();
+            Class<?> targetClass = getTargetClass();
             Constructor<?>[] constrs = targetClass.getConstructors();
 
             // Applicable if and only if there are any annotated constructors
@@ -1226,10 +1255,16 @@
                 for (int i = 0; i < propertyNames.length; i++) {
                     String propertyName = propertyNames[i];
                     if (!getterMap.containsKey(propertyName)) {
-                        final String msg =
+                        String msg =
                             "@ConstructorProperties includes name " + propertyName +
-                            " which does not correspond to a property: " +
-                            constr;
+                            " which does not correspond to a property";
+                        for (String getterName : getterMap.keySet()) {
+                            if (getterName.equalsIgnoreCase(propertyName)) {
+                                msg += " (differs only in case from property " +
+                                        getterName + ")";
+                            }
+                        }
+                        msg += ": " + constr;
                         throw new InvalidObjectException(msg);
                     }
                     int getterIndex = getterMap.get(propertyName);
@@ -1384,12 +1419,12 @@
     private static final class CompositeBuilderViaProxy
             extends CompositeBuilder {
 
-        CompositeBuilderViaProxy(Class targetClass, String[] itemNames) {
+        CompositeBuilderViaProxy(Class<?> targetClass, String[] itemNames) {
             super(targetClass, itemNames);
         }
 
         String applicable(Method[] getters) {
-            Class targetClass = getTargetClass();
+            Class<?> targetClass = getTargetClass();
             if (!targetClass.isInterface())
                 return "not an interface";
             Set<Method> methods =
@@ -1401,7 +1436,7 @@
             String bad = null;
             for (Method m : methods) {
                 String mname = m.getName();
-                Class[] mparams = m.getParameterTypes();
+                Class<?>[] mparams = m.getParameterTypes();
                 try {
                     Method om = Object.class.getMethod(mname, mparams);
                     if (!Modifier.isPublic(om.getModifiers()))
@@ -1422,10 +1457,10 @@
         final Object fromCompositeData(CompositeData cd,
                                        String[] itemNames,
                                        MXBeanMapping[] converters) {
-            final Class targetClass = getTargetClass();
+            final Class<?> targetClass = getTargetClass();
             return
                 Proxy.newProxyInstance(targetClass.getClassLoader(),
-                                       new Class[] {targetClass},
+                                       new Class<?>[] {targetClass},
                                        new CompositeDataInvocationHandler(cd));
         }
     }
@@ -1447,9 +1482,9 @@
         return openDataException(cause.getMessage(), cause);
     }
 
-    static void mustBeComparable(Class collection, Type element)
+    static void mustBeComparable(Class<?> collection, Type element)
             throws OpenDataException {
-        if (!(element instanceof Class)
+        if (!(element instanceof Class<?>)
             || !Comparable.class.isAssignableFrom((Class<?>) element)) {
             final String msg =
                 "Parameter class " + element + " of " +
--- a/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java	Thu Jan 29 18:33:52 2009 -0800
@@ -63,7 +63,14 @@
 import java.beans.PropertyDescriptor;
 import java.lang.reflect.Array;
 import java.lang.reflect.InvocationTargetException;
+import java.util.LinkedHashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import javax.management.AttributeNotFoundException;
+import javax.management.JMX;
+import javax.management.ObjectName;
+import javax.management.ObjectNameTemplate;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.MXBeanMappingFactory;
 
@@ -75,7 +82,13 @@
  */
 public class Introspector {
 
-
+    /**
+     * Pattern used to extract Attribute Names from ObjectNameTemplate Annotation
+     * For example, in the following example, the Name attribute value is
+     * retrieved : ":type=MyType, name={Name}"
+     */
+    private static Pattern OBJECT_NAME_PATTERN_TEMPLATE =
+            Pattern.compile("(\\{[^\\}]+\\})|(=\"\\{[^\\}]+\\}\")");
      /*
      * ------------------------------------------
      *  PRIVATE CONSTRUCTORS
@@ -115,7 +128,7 @@
      *         Dynamic MBeans, <code>false</code> otherwise.
      *
      **/
-    public static final boolean isDynamic(final Class c) {
+    public static final boolean isDynamic(final Class<?> c) {
         // Check if the MBean implements the DynamicMBean interface
         return javax.management.DynamicMBean.class.isAssignableFrom(c);
     }
@@ -134,7 +147,7 @@
      *            MBeanServer.
      *
      **/
-    public static void testCreation(Class c)
+    public static void testCreation(Class<?> c)
         throws NotCompliantMBeanException {
         // Check if the class is a concrete class
         final int mods = c.getModifiers();
@@ -143,7 +156,7 @@
         }
 
         // Check if the MBean has a public constructor
-        final Constructor[] consList = c.getConstructors();
+        final Constructor<?>[] consList = c.getConstructors();
         if (consList.length == 0) {
             throw new NotCompliantMBeanException("MBean class must have public constructor");
         }
@@ -253,7 +266,7 @@
      * @exception NotCompliantMBeanException The specified class is not a
      *            JMX compliant MBean
      */
-    public static MBeanInfo testCompliance(Class baseClass)
+    public static MBeanInfo testCompliance(Class<?> baseClass)
         throws NotCompliantMBeanException {
 
         // ------------------------------
@@ -267,7 +280,7 @@
         return testCompliance(baseClass, null);
     }
 
-    public static void testComplianceMXBeanInterface(Class interfaceClass,
+    public static void testComplianceMXBeanInterface(Class<?> interfaceClass,
                                                      MXBeanMappingFactory factory)
             throws NotCompliantMBeanException {
         MXBeanIntrospector.getInstance(factory).getAnalyzer(interfaceClass);
@@ -389,6 +402,42 @@
             return getStandardMBeanInterface(baseClass);
     }
 
+    public static ObjectName templateToObjectName(Descriptor descriptor,
+            DynamicMBean mbean)
+            throws NotCompliantMBeanException {
+        String template = (String)
+            descriptor.getFieldValue(JMX.OBJECT_NAME_TEMPLATE);
+        if(template == null) return null;
+        try {
+            Matcher m = OBJECT_NAME_PATTERN_TEMPLATE.matcher(template);
+            while (m.find()){
+                String grp = m.group();
+                System.out.println("GROUP " + grp);
+                String attributeName = null;
+                boolean quote = false;
+                if(grp.startsWith("=\"{")) {
+                    attributeName = grp.substring(3, grp.length() - 2);
+                    quote = true;
+                } else
+                    attributeName = grp.substring(1, grp.length() - 1);
+
+                Object attributeValue = mbean.getAttribute(attributeName);
+                String validValue = quote ?
+                    "=" + ObjectName.quote(attributeValue.toString()) :
+                    attributeValue.toString();
+                template = template.replace(grp, validValue);
+            }
+            return new ObjectName(template);
+        }catch(Exception ex) {
+            NotCompliantMBeanException ncex = new
+                    NotCompliantMBeanException(ObjectNameTemplate.class.
+                    getSimpleName() + " annotation value [" + template + "] " +
+                    "is invalid. " + ex);
+            ncex.initCause(ex);
+            throw ncex;
+        }
+    }
+
     /*
      * ------------------------------------------
      *  PRIVATE METHODS
@@ -462,11 +511,31 @@
         return null;
     }
 
-    public static Descriptor descriptorForElement(final AnnotatedElement elmt) {
+    public static Descriptor descriptorForElement(final AnnotatedElement elmt,
+            boolean isSetter) {
         if (elmt == null)
             return ImmutableDescriptor.EMPTY_DESCRIPTOR;
         final Annotation[] annots = elmt.getAnnotations();
-        return descriptorForAnnotations(annots);
+        Descriptor descr = descriptorForAnnotations(annots);
+        String[] exceptions = {};
+        if(elmt instanceof Method)
+            exceptions = getAllExceptions(((Method) elmt).getExceptionTypes());
+        else
+            if(elmt instanceof Constructor<?>)
+                exceptions = getAllExceptions(((Constructor<?>) elmt).
+                        getExceptionTypes());
+
+        if(exceptions.length > 0 ) {
+            String fieldName = isSetter ? JMX.SET_EXCEPTIONS_FIELD :
+                JMX.EXCEPTIONS_FIELD;
+
+            String[] fieldNames = {fieldName};
+            Object[] fieldValues = {exceptions};
+            descr = ImmutableDescriptor.union(descr,
+                    new ImmutableDescriptor(fieldNames, fieldValues));
+        }
+
+        return descr;
     }
 
     public static Descriptor descriptorForAnnotation(Annotation annot) {
@@ -489,6 +558,20 @@
             return new ImmutableDescriptor(descriptorMap);
     }
 
+    /**
+     * Array of thrown excepions.
+     * @param exceptions can be null;
+     * @return An Array of Exception class names. Size is 0 if method is null.
+     */
+    private static String[] getAllExceptions(Class<?>[] exceptions) {
+        Set<String> set = new LinkedHashSet<String>();
+        for(Class<?>ex : exceptions)
+            set.add(ex.getName());
+
+        String[] arr = new String[set.size()];
+        return set.toArray(arr);
+    }
+
     private static void addDescriptorFieldsToMap(
             Map<String, Object> descriptorMap, DescriptorFields df) {
         for (String field : df.value()) {
@@ -596,10 +679,10 @@
                 ss[i] = (String) annotationToField(xx[i]);
             return ss;
         }
-        if (x instanceof Class)
+        if (x instanceof Class<?>)
             return ((Class<?>) x).getName();
-        if (x instanceof Enum)
-            return ((Enum) x).name();
+        if (x instanceof Enum<?>)
+            return ((Enum<?>) x).name();
         // The only other possibility is that the value is another
         // annotation, or that the language has evolved since this code
         // was written.  We don't allow for either of those currently.
--- a/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -33,6 +33,7 @@
 import java.security.Permission;
 import java.security.PrivilegedExceptionAction;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Set;
 import java.util.logging.Level;
 
@@ -121,7 +122,7 @@
      *     {@link javax.management.MBeanServerFactory#newMBeanServer(java.lang.String)}
      *     instead.
      *     <p>
-     *     By default, {@link MBeanServerInterceptor} are disabled. Use
+     *     By default, interceptors are disabled. Use
      *     {@link #JmxMBeanServer(java.lang.String,javax.management.MBeanServer,javax.management.MBeanServerDelegate,boolean)} to enable them.
      * </ul>
      * @param domain The default domain name used by this MBeanServer.
@@ -238,7 +239,7 @@
         this.mBeanServerDelegateObject = delegate;
         this.outerShell   = outer;
 
-        final Repository repository = new Repository(domain,fairLock);
+        final Repository repository = new Repository(domain);
         this.mbsInterceptor =
             new NamespaceDispatchInterceptor(outer, delegate, instantiator,
                                               repository);
@@ -1144,7 +1145,7 @@
         // This call requires MBeanPermission 'getClassLoaderRepository'
         final ClassLoaderRepository clr = getClassLoaderRepository();
 
-        Class theClass;
+        Class<?> theClass;
         try {
             if (clr == null) throw new ClassNotFoundException(className);
             theClass = clr.loadClass(className);
@@ -1457,23 +1458,22 @@
      */
     private AttributeList cloneAttributeList(AttributeList list) {
         if (list != null) {
+            List<Attribute> alist = list.asList();
             if (!list.getClass().equals(AttributeList.class)) {
                 // Create new attribute list
                 //
-                AttributeList newList = new AttributeList(list.size());
+                AttributeList newList = new AttributeList(alist.size());
 
                 // Iterate through list and replace non JMX attributes
                 //
-                for (Iterator i = list.iterator(); i.hasNext(); ) {
-                    Attribute attribute = (Attribute) i.next();
+                for (Attribute attribute : alist)
                     newList.add(cloneAttribute(attribute));
-                }
                 return newList;
             } else {
                 // Iterate through list and replace non JMX attributes
                 //
-                for (int i = 0; i < list.size(); i++) {
-                    Attribute attribute = (Attribute) list.get(i);
+                for (int i = 0; i < alist.size(); i++) {
+                    Attribute attribute = alist.get(i);
                     if (!attribute.getClass().equals(Attribute.class)) {
                         list.set(i, cloneAttribute(attribute));
                     }
--- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInjector.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInjector.java	Thu Jan 29 18:33:52 2009 -0800
@@ -47,6 +47,10 @@
 import javax.management.SendNotification;
 
 public class MBeanInjector {
+    // There are no instances of this class
+    private MBeanInjector() {
+    }
+
     private static Class<?>[] injectedClasses = {
         MBeanServer.class, ObjectName.class, SendNotification.class,
     };
--- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java	Thu Jan 29 18:33:52 2009 -0800
@@ -70,7 +70,7 @@
      * instantiate an MBean of this class in the MBeanServer.
      * e.g. it must have a public constructor, be a concrete class...
      */
-    public void testCreation(Class c) throws NotCompliantMBeanException {
+    public void testCreation(Class<?> c) throws NotCompliantMBeanException {
         Introspector.testCreation(c);
     }
 
@@ -78,10 +78,10 @@
      * Loads the class with the specified name using this object's
      * Default Loader Repository.
      **/
-    public Class findClassWithDefaultLoaderRepository(String className)
+    public Class<?> findClassWithDefaultLoaderRepository(String className)
         throws ReflectionException {
 
-        Class theClass;
+        Class<?> theClass;
         if (className == null) {
             throw new RuntimeOperationsException(new
                 IllegalArgumentException("The class name cannot be null"),
@@ -105,7 +105,7 @@
      * Gets the class for the specified class name using the MBean
      * Interceptor's classloader
      */
-    public Class findClass(String className, ClassLoader loader)
+    public Class<?> findClass(String className, ClassLoader loader)
         throws ReflectionException {
 
         return loadClass(className,loader);
@@ -115,7 +115,7 @@
      * Gets the class for the specified class name using the specified
      * class loader
      */
-    public Class findClass(String className, ObjectName aLoader)
+    public Class<?> findClass(String className, ObjectName aLoader)
         throws ReflectionException, InstanceNotFoundException  {
 
         if (aLoader == null)
@@ -140,14 +140,14 @@
      * Return an array of Class corresponding to the given signature, using
      * the specified class loader.
      */
-    public Class[] findSignatureClasses(String signature[],
-                                        ClassLoader loader)
-        throws  ReflectionException {
+    public Class<?>[] findSignatureClasses(String signature[],
+                                           ClassLoader loader)
+        throws ReflectionException {
 
         if (signature == null) return null;
         final ClassLoader aLoader = loader;
         final int length= signature.length;
-        final Class tab[]=new Class[length];
+        final Class<?> tab[]=new Class<?>[length];
 
         if (length == 0) return tab;
         try {
@@ -156,7 +156,7 @@
                 // forth)
                 //
 
-                final Class primCla = primitiveClasses.get(signature[i]);
+                final Class<?> primCla = primitiveClasses.get(signature[i]);
                 if (primCla != null) {
                     tab[i] = primCla;
                     continue;
@@ -203,14 +203,14 @@
      * Instantiates an object given its class, using its empty constructor.
      * The call returns a reference to the newly created object.
      */
-    public Object instantiate(Class theClass)
+    public Object instantiate(Class<?> theClass)
         throws ReflectionException, MBeanException {
         Object moi;
 
 
         // ------------------------------
         // ------------------------------
-        Constructor cons = findConstructor(theClass, null);
+        Constructor<?> cons = findConstructor(theClass, null);
         if (cons == null) {
             throw new ReflectionException(new
                 NoSuchMethodException("No such constructor"));
@@ -257,14 +257,14 @@
      * signature of its constructor The call returns a reference to
      * the newly created object.
      */
-    public Object instantiate(Class theClass, Object params[],
+    public Object instantiate(Class<?> theClass, Object params[],
                               String signature[], ClassLoader loader)
         throws ReflectionException, MBeanException {
         // Instantiate the new object
 
         // ------------------------------
         // ------------------------------
-        final Class[] tab;
+        final Class<?>[] tab;
         Object moi;
         try {
             // Build the signature of the method
@@ -283,7 +283,7 @@
         }
 
         // Query the metadata service to get the right constructor
-        Constructor cons = findConstructor(theClass, tab);
+        Constructor<?> cons = findConstructor(theClass, tab);
 
         if (cons == null) {
             throw new ReflectionException(new
@@ -407,7 +407,7 @@
             throw new  RuntimeOperationsException(new
              IllegalArgumentException(), "Null className passed in parameter");
         }
-        Class theClass;
+        Class<?> theClass;
         if (loaderName == null) {
             // Load the class using the agent class loader
             theClass = findClass(className, loader);
@@ -547,7 +547,7 @@
         throws ReflectionException,
         MBeanException {
 
-        Class theClass = findClassWithDefaultLoaderRepository(className);
+        Class<?> theClass = findClassWithDefaultLoaderRepository(className);
         return instantiate(theClass, params, signature, loader);
     }
 
@@ -595,7 +595,7 @@
 
         // ------------------------------
         // ------------------------------
-        Class theClass;
+        Class<?> theClass;
 
         if (loaderName == null) {
             theClass = findClass(className, loader);
@@ -614,13 +614,22 @@
     }
 
     /**
+     * Returns the class of a primitive type.
+     * @param name The type for which we the associated class.
+     * @return the class, or null if name is not primitive.
+     */
+    public static Class<?> primitiveType(String name) {
+        return primitiveClasses.get(name);
+    }
+
+    /**
      * Load a class with the specified loader, or with this object
      * class loader if the specified loader is null.
      **/
-    static Class loadClass(String className, ClassLoader loader)
+    static Class<?> loadClass(String className, ClassLoader loader)
         throws ReflectionException {
 
-        Class theClass;
+        Class<?> theClass;
         if (className == null) {
             throw new RuntimeOperationsException(new
                 IllegalArgumentException("The class name cannot be null"),
@@ -636,7 +645,7 @@
             }
         } catch (ClassNotFoundException e) {
             throw new ReflectionException(e,
-            "The MBean class could not be loaded by the context classloader");
+            "The MBean class could not be loaded");
         }
         return theClass;
     }
@@ -647,15 +656,15 @@
      * Load the classes specified in the signature with the given loader,
      * or with this object class loader.
      **/
-    static Class[] loadSignatureClasses(String signature[],
-                                        ClassLoader loader)
+    static Class<?>[] loadSignatureClasses(String signature[],
+                                           ClassLoader loader)
         throws  ReflectionException {
 
         if (signature == null) return null;
         final ClassLoader aLoader =
            (loader==null?MBeanInstantiator.class.getClassLoader():loader);
         final int length= signature.length;
-        final Class tab[]=new Class[length];
+        final Class<?> tab[]=new Class<?>[length];
 
         if (length == 0) return tab;
         try {
@@ -664,7 +673,7 @@
                 // forth)
                 //
 
-                final Class primCla = primitiveClasses.get(signature[i]);
+                final Class<?> primCla = primitiveClasses.get(signature[i]);
                 if (primCla != null) {
                     tab[i] = primCla;
                     continue;
@@ -710,9 +719,9 @@
 
     private static final Map<String, Class<?>> primitiveClasses = Util.newMap();
     static {
-        for (Class<?> c : new Class[] {byte.class, short.class, int.class,
-                                       long.class, float.class, double.class,
-                                       char.class, boolean.class})
+        for (Class<?> c : new Class<?>[] {byte.class, short.class, int.class,
+                                          long.class, float.class, double.class,
+                                          char.class, boolean.class})
             primitiveClasses.put(c.getName(), c);
     }
 }
--- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java	Thu Jan 29 18:33:52 2009 -0800
@@ -79,7 +79,7 @@
  * ancestor with ConvertingMethod.  But that would mean an extra object
  * for every Method in every Standard MBean interface.
  */
-abstract class MBeanIntrospector<M> {
+public abstract class MBeanIntrospector<M> {
     static final class PerInterfaceMap<M>
             extends WeakHashMap<Class<?>, WeakReference<PerInterface<M>>> {}
 
@@ -403,7 +403,7 @@
                     new ImmutableDescriptor(interfaceClassName);
             final Descriptor mbeanDescriptor = getBasicMBeanDescriptor();
             final Descriptor annotatedDescriptor =
-                    Introspector.descriptorForElement(mbeanInterface);
+                    Introspector.descriptorForElement(mbeanInterface, false);
             final Descriptor descriptor =
                 DescriptorCache.getInstance().union(
                     classNameDescriptor,
@@ -518,7 +518,7 @@
      * see the version of the @ManagedAttribute (or ...Operation) annotation
      * from that method, which might have a different description or whatever.
      */
-    private static void getAnnotatedMethods(Class<?> c, List<Method> methods)
+    public static void getAnnotatedMethods(Class<?> c, List<Method> methods)
     throws Exception {
         Class<?> sup = c.getSuperclass();
         if (sup != null)
@@ -537,25 +537,41 @@
         }
     }
 
+    /*
+     * Return the array of MBeanNotificationInfo for the given MBean object.
+     * If the object implements NotificationBroadcaster and its
+     * getNotificationInfo() method returns a non-empty array, then that
+     * is the result.  Otherwise, if the object has a @NotificationInfo
+     * or @NotificationInfos annotation, then its contents form the result.
+     * Otherwise, the result is null.
+     */
     static MBeanNotificationInfo[] findNotifications(Object moi) {
-        if (!(moi instanceof NotificationBroadcaster))
-            return null;
-        MBeanNotificationInfo[] mbn =
-                ((NotificationBroadcaster) moi).getNotificationInfo();
-        if (mbn == null || mbn.length == 0)
-            return findNotificationsFromAnnotations(moi.getClass());
-        MBeanNotificationInfo[] result =
-                new MBeanNotificationInfo[mbn.length];
-        for (int i = 0; i < mbn.length; i++) {
-            MBeanNotificationInfo ni = mbn[i];
-            if (ni.getClass() != MBeanNotificationInfo.class)
-                ni = (MBeanNotificationInfo) ni.clone();
-            result[i] = ni;
+        if (moi instanceof NotificationBroadcaster) {
+            MBeanNotificationInfo[] mbn =
+                    ((NotificationBroadcaster) moi).getNotificationInfo();
+            if (mbn != null && mbn.length > 0) {
+                MBeanNotificationInfo[] result =
+                        new MBeanNotificationInfo[mbn.length];
+                for (int i = 0; i < mbn.length; i++) {
+                    MBeanNotificationInfo ni = mbn[i];
+                    if (ni.getClass() != MBeanNotificationInfo.class)
+                        ni = (MBeanNotificationInfo) ni.clone();
+                    result[i] = ni;
+                }
+                return result;
+            }
+        } else {
+            try {
+                if (!MBeanInjector.injectsSendNotification(moi))
+                    return null;
+            } catch (NotCompliantMBeanException e) {
+                throw new RuntimeException(e);
+            }
         }
-        return result;
+        return findNotificationsFromAnnotations(moi.getClass());
     }
 
-    private static MBeanNotificationInfo[] findNotificationsFromAnnotations(
+    public static MBeanNotificationInfo[] findNotificationsFromAnnotations(
             Class<?> mbeanClass) {
         Class<?> c = getAnnotatedNotificationInfoClass(mbeanClass);
         if (c == null)
--- a/src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java	Thu Jan 29 18:33:52 2009 -0800
@@ -32,6 +32,7 @@
 import java.lang.reflect.GenericArrayType;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.Map;
 import java.util.WeakHashMap;
@@ -159,7 +160,7 @@
             // matched to the corresponding Java type, except when that
             // type is primitive.
             Type t = m.getGenericParameterTypes()[paramNo];
-            return (!(t instanceof Class) || !((Class) t).isPrimitive());
+            return (!(t instanceof Class<?>) || !((Class<?>) t).isPrimitive());
         } else {
             Object v;
             try {
@@ -291,7 +292,7 @@
         Descriptor descriptor =
             typeDescriptor(returnType, originalReturnType);
         descriptor = ImmutableDescriptor.union(descriptor,
-                Introspector.descriptorForElement(method));
+                Introspector.descriptorForElement(method, false));
         final MBeanOperationInfo oi;
         if (openReturnType && openParameterTypes) {
             /* If the return value and all the parameters can be faithfully
@@ -353,7 +354,7 @@
         }
     }
 
-    private static Descriptor typeDescriptor(OpenType openType,
+    private static Descriptor typeDescriptor(OpenType<?> openType,
                                              Type originalType) {
         return new ImmutableDescriptor(
             new String[] {"openType",
@@ -379,18 +380,42 @@
         if (type instanceof GenericArrayType) {
             return canUseOpenInfo(
                 ((GenericArrayType) type).getGenericComponentType());
-        } else if (type instanceof Class && ((Class<?>) type).isArray()) {
+        } else if (type instanceof Class<?> && ((Class<?>) type).isArray()) {
             return canUseOpenInfo(
                 ((Class<?>) type).getComponentType());
         }
-        return (!(type instanceof Class && ((Class<?>) type).isPrimitive()));
+        return (!(type instanceof Class<?> && ((Class<?>) type).isPrimitive()));
     }
 
     private static String originalTypeString(Type type) {
-        if (type instanceof Class)
-            return ((Class) type).getName();
+        if (type instanceof Class<?>)
+            return ((Class<?>) type).getName();
         else
-            return type.toString();
+            return typeName(type);
+    }
+
+    static String typeName(Type type) {
+        if (type instanceof Class<?>) {
+            Class<?> c = (Class<?>) type;
+            if (c.isArray())
+                return typeName(c.getComponentType()) + "[]";
+            else
+                return c.getName();
+        } else if (type instanceof GenericArrayType) {
+            GenericArrayType gat = (GenericArrayType) type;
+            return typeName(gat.getGenericComponentType()) + "[]";
+        } else if (type instanceof ParameterizedType) {
+            ParameterizedType pt = (ParameterizedType) type;
+            StringBuilder sb = new StringBuilder();
+            sb.append(typeName(pt.getRawType())).append("<");
+            String sep = "";
+            for (Type t : pt.getActualTypeArguments()) {
+                sb.append(sep).append(typeName(t));
+                sep = ", ";
+            }
+            return sb.append(">").toString();
+        } else
+            return "???";
     }
 
     private final PerInterfaceMap<ConvertingMethod>
--- a/src/share/classes/com/sun/jmx/mbeanserver/MXBeanLookup.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/MXBeanLookup.java	Thu Jan 29 18:33:52 2009 -0800
@@ -37,7 +37,6 @@
 import javax.management.JMX;
 import javax.management.MBeanServerConnection;
 import javax.management.MBeanServerInvocationHandler;
-import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.management.openmbean.OpenDataException;
 
@@ -225,7 +224,7 @@
             String domain = prefix + name.getDomain();
             try {
                 name = name.withDomain(domain);
-            } catch (MalformedObjectNameException e) {
+            } catch (IllegalArgumentException e) {
                 throw EnvHelp.initCause(
                         new InvalidObjectException(e.getMessage()), e);
             }
@@ -239,12 +238,14 @@
             String domain = name.getDomain();
             if (!domain.startsWith(prefix)) {
                 throw new OpenDataException(
-                        "Proxy's name does not start with " + prefix + ": " + name);
+                        "Proxy's name does not start with " +
+                        prefix + ": " + name);
             }
             try {
                 name = name.withDomain(domain.substring(prefix.length()));
-            } catch (MalformedObjectNameException e) {
-                throw EnvHelp.initCause(new OpenDataException(e.getMessage()), e);
+            } catch (IllegalArgumentException e) {
+                throw EnvHelp.initCause(
+                        new OpenDataException(e.getMessage()), e);
             }
             return name;
         }
--- a/src/share/classes/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -54,7 +54,8 @@
         this.loader = theLoader;
     }
 
-    protected Class resolveClass(ObjectStreamClass aClass)
+    @Override
+    protected Class<?> resolveClass(ObjectStreamClass aClass)
             throws IOException, ClassNotFoundException {
         if (loader == null) {
             return super.resolveClass(aClass);
--- a/src/share/classes/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
@@ -47,16 +47,16 @@
     public SecureClassLoaderRepository(ClassLoaderRepository clr) {
         this.clr=clr;
     }
-    public final Class loadClass(String className)
+    public final Class<?> loadClass(String className)
         throws ClassNotFoundException {
         return clr.loadClass(className);
     }
-    public final Class loadClassWithout(ClassLoader loader,
+    public final Class<?> loadClassWithout(ClassLoader loader,
                                   String className)
         throws ClassNotFoundException {
         return clr.loadClassWithout(loader,className);
     }
-    public final Class loadClassBefore(ClassLoader loader,
+    public final Class<?> loadClassBefore(ClassLoader loader,
                                  String className)
         throws ClassNotFoundException {
         return clr.loadClassBefore(loader,className);
--- a/src/share/classes/com/sun/jmx/mbeanserver/Util.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/Util.java	Thu Jan 29 18:33:52 2009 -0800
@@ -48,7 +48,6 @@
 import javax.management.MBeanServer;
 import javax.management.MBeanServerDelegate;
 import javax.management.MBeanServerFactory;
-import javax.management.MalformedObjectNameException;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
 import javax.management.loading.ClassLoaderRepository;
@@ -669,7 +668,7 @@
     }
 
     public static <T> Set<T> cloneSet(Set<T> set) {
-        if (set instanceof SortedSet) {
+        if (set instanceof SortedSet<?>) {
             @SuppressWarnings("unchecked")
             SortedSet<T> sset = (SortedSet<T>) set;
             set = new TreeSet<T>(sset.comparator());
@@ -680,7 +679,7 @@
     }
 
     public static <T> Set<T> equivalentEmptySet(Set<T> set) {
-        if (set instanceof SortedSet) {
+        if (set instanceof SortedSet<?>) {
             @SuppressWarnings("unchecked")
             SortedSet<T> sset = (SortedSet<T>) set;
             set = new TreeSet<T>(sset.comparator());
--- a/src/share/classes/com/sun/jmx/mbeanserver/WeakIdentityHashMap.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/mbeanserver/WeakIdentityHashMap.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
@@ -118,9 +118,9 @@
         public boolean equals(Object o) {
             if (this == o)
                 return true;
-            if (!(o instanceof IdentityWeakReference))
+            if (!(o instanceof IdentityWeakReference<?>))
                 return false;
-            IdentityWeakReference wr = (IdentityWeakReference) o;
+            IdentityWeakReference<?> wr = (IdentityWeakReference<?>) o;
             Object got = get();
             return (got != null && got == wr.get());
         }
--- a/src/share/classes/com/sun/jmx/namespace/DomainInterceptor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/namespace/DomainInterceptor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -42,7 +42,6 @@
 import javax.management.MBeanPermission;
 import javax.management.MBeanServerDelegate;
 import javax.management.MBeanServerNotification;
-import javax.management.MalformedObjectNameException;
 import javax.management.Notification;
 import javax.management.NotificationFilter;
 import javax.management.NotificationListener;
@@ -268,13 +267,9 @@
     // When we reach here, it has been verified that 'name' matches our domain
     // name (done by DomainDispatchInterceptor)
     private ObjectName getPatternFor(final ObjectName name) {
-        try {
-            if (name == null) return ALL;
-            if (name.getDomain().equals(domainName)) return name;
-            return name.withDomain(domainName);
-        } catch (MalformedObjectNameException x) {
-            throw new IllegalArgumentException(String.valueOf(name),x);
-        }
+        if (name == null) return ALL;
+        if (name.getDomain().equals(domainName)) return name;
+        return name.withDomain(domainName);
    }
 
     @Override
--- a/src/share/classes/com/sun/jmx/namespace/JMXNamespaceUtils.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,354 +0,0 @@
-/*
- * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package com.sun.jmx.namespace;
-
-import com.sun.jmx.defaults.JmxProperties;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Map;
-import java.util.WeakHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.management.ListenerNotFoundException;
-import javax.management.MBeanServerConnection;
-import javax.management.NotificationFilter;
-import javax.management.NotificationListener;
-import javax.management.event.EventClient;
-import javax.management.event.EventClientDelegateMBean;
-import javax.management.namespace.JMXNamespace;
-import javax.management.namespace.JMXNamespaces;
-import javax.management.remote.JMXAddressable;
-import javax.management.remote.JMXConnector;
-import javax.management.remote.JMXServiceURL;
-import javax.security.auth.Subject;
-
-/**
- * A collection of methods that provide JMXConnector wrappers for
- * JMXRemoteNamepaces underlying connectors.
- * <p><b>
- * This API is a Sun internal API and is subject to changes without notice.
- * </b></p>
- * @since 1.7
- */
-public final class JMXNamespaceUtils {
-
-    /**
-     * A logger for this class.
-     **/
-    private static final Logger LOG = JmxProperties.NAMESPACE_LOGGER;
-
-
-    private static <K,V> Map<K,V> newWeakHashMap() {
-        return new WeakHashMap<K,V>();
-    }
-
-    /** There are no instances of this class */
-    private JMXNamespaceUtils() {
-    }
-
-    // returns un unmodifiable view of a map.
-    public static <K,V> Map<K,V> unmodifiableMap(Map<K,V> aMap) {
-        if (aMap == null || aMap.isEmpty())
-            return Collections.emptyMap();
-        return Collections.unmodifiableMap(aMap);
-    }
-
-
-    /**
-     * A base class that helps writing JMXConnectors that return
-     * MBeanServerConnection wrappers.
-     * This base class wraps an inner JMXConnector (the source), and preserve
-     * its caching policy. If a connection is cached in the source, its wrapper
-     * will be cached in this connector too.
-     * Author's note: rewriting this with java.lang.reflect.Proxy could be
-     * envisaged. It would avoid the combinatory sub-classing introduced by
-     * JMXAddressable.
-     * <p>
-     * Note: all the standard JMXConnector implementations are serializable.
-     *       This implementation here is not. Should it be?
-     *       I believe it must not be serializable unless it becomes
-     *       part of a public API (either standard or officially exposed
-     *       and supported in a documented com.sun package)
-     **/
-     static class JMXCachingConnector
-            implements JMXConnector  {
-
-        // private static final long serialVersionUID = -2279076110599707875L;
-
-        final JMXConnector source;
-
-        // if this object is made serializable, then the variable below
-        // needs to become volatile transient and be lazyly-created...
-        private final
-                Map<MBeanServerConnection,MBeanServerConnection> connectionMap;
-
-
-        public JMXCachingConnector(JMXConnector source) {
-            this.source = checkNonNull(source, "source");
-            connectionMap = newWeakHashMap();
-        }
-
-        private MBeanServerConnection
-                getCached(MBeanServerConnection inner) {
-            return connectionMap.get(inner);
-        }
-
-        private MBeanServerConnection putCached(final MBeanServerConnection inner,
-                final MBeanServerConnection wrapper) {
-            if (inner == wrapper) return wrapper;
-            synchronized (this) {
-                final MBeanServerConnection concurrent =
-                        connectionMap.get(inner);
-                if (concurrent != null) return concurrent;
-                connectionMap.put(inner,wrapper);
-            }
-            return wrapper;
-        }
-
-        public void addConnectionNotificationListener(NotificationListener
-                listener, NotificationFilter filter, Object handback) {
-            source.addConnectionNotificationListener(listener,filter,handback);
-        }
-
-        public void close() throws IOException {
-            source.close();
-        }
-
-        public void connect() throws IOException {
-            source.connect();
-        }
-
-        public void connect(Map<String,?> env) throws IOException {
-            source.connect(env);
-        }
-
-        public String getConnectionId() throws IOException {
-            return source.getConnectionId();
-        }
-
-        /**
-         * Preserve caching policy of the underlying connector.
-         **/
-        public MBeanServerConnection
-                getMBeanServerConnection() throws IOException {
-            final MBeanServerConnection inner =
-                    source.getMBeanServerConnection();
-            final MBeanServerConnection cached = getCached(inner);
-            if (cached != null) return cached;
-            final MBeanServerConnection wrapper = wrap(inner);
-            return putCached(inner,wrapper);
-        }
-
-        public MBeanServerConnection
-                getMBeanServerConnection(Subject delegationSubject)
-                throws IOException {
-            final MBeanServerConnection wrapped =
-                    source.getMBeanServerConnection(delegationSubject);
-            synchronized (this) {
-                final MBeanServerConnection cached = getCached(wrapped);
-                if (cached != null) return cached;
-                final MBeanServerConnection wrapper =
-                    wrapWithSubject(wrapped,delegationSubject);
-                return putCached(wrapped,wrapper);
-            }
-        }
-
-        public void removeConnectionNotificationListener(
-                NotificationListener listener)
-                throws ListenerNotFoundException {
-            source.removeConnectionNotificationListener(listener);
-        }
-
-        public void removeConnectionNotificationListener(
-                NotificationListener l, NotificationFilter f,
-                Object handback) throws ListenerNotFoundException {
-            source.removeConnectionNotificationListener(l,f,handback);
-        }
-
-        /**
-         * This is the method that subclass will redefine. This method
-         * is called by {@code this.getMBeanServerConnection()}.
-         * {@code inner} is the connection returned by
-         * {@code source.getMBeanServerConnection()}.
-         **/
-        protected MBeanServerConnection wrap(MBeanServerConnection inner)
-            throws IOException {
-            return inner;
-        }
-
-        /**
-         * Subclass may also want to redefine this method.
-         * By default it calls wrap(inner). This method
-         * is called by {@code this.getMBeanServerConnection(Subject)}.
-         * {@code inner} is the connection returned by
-         * {@code source.getMBeanServerConnection(Subject)}.
-         **/
-        protected MBeanServerConnection wrapWithSubject(
-                MBeanServerConnection inner, Subject delegationSubject)
-            throws IOException {
-                return wrap(inner);
-        }
-
-        @Override
-        public String toString() {
-            if (source instanceof JMXAddressable) {
-                final JMXServiceURL address =
-                        ((JMXAddressable)source).getAddress();
-                if (address != null)
-                    return address.toString();
-            }
-            return source.toString();
-        }
-
-    }
-
-
-    /**
-     * The name space connector can do 'cd'
-     **/
-    static class JMXNamespaceConnector extends JMXCachingConnector {
-
-        // private static final long serialVersionUID = -4813611540843020867L;
-
-        private final String toDir;
-        private final boolean closeable;
-
-        public JMXNamespaceConnector(JMXConnector source, String toDir,
-                boolean closeable) {
-            super(source);
-            this.toDir = toDir;
-            this.closeable = closeable;
-        }
-
-        @Override
-        public void close() throws IOException {
-            if (!closeable)
-                throw new UnsupportedOperationException("close");
-            else super.close();
-        }
-
-        @Override
-        protected MBeanServerConnection wrap(MBeanServerConnection wrapped)
-               throws IOException {
-            if (LOG.isLoggable(Level.FINER))
-                LOG.finer("Creating name space proxy connection for source: "+
-                        "namespace="+toDir);
-            return JMXNamespaces.narrowToNamespace(wrapped,toDir);
-        }
-
-        @Override
-        public String toString() {
-            return "JMXNamespaces.narrowToNamespace("+
-                    super.toString()+
-                    ", \""+toDir+"\")";
-        }
-
-    }
-
-    static class JMXEventConnector extends JMXCachingConnector {
-
-        // private static final long serialVersionUID = 4742659236340242785L;
-
-        JMXEventConnector(JMXConnector wrapped) {
-            super(wrapped);
-        }
-
-        @Override
-        protected MBeanServerConnection wrap(MBeanServerConnection inner)
-                throws IOException {
-            return EventClient.getEventClientConnection(inner);
-        }
-
-
-        @Override
-        public String toString() {
-            return "EventClient.withEventClient("+super.toString()+")";
-        }
-    }
-
-    static class JMXAddressableEventConnector extends JMXEventConnector
-        implements JMXAddressable {
-
-        // private static final long serialVersionUID = -9128520234812124712L;
-
-        JMXAddressableEventConnector(JMXConnector wrapped) {
-            super(wrapped);
-        }
-
-        public JMXServiceURL getAddress() {
-            return ((JMXAddressable)source).getAddress();
-        }
-    }
-
-    /**
-     * Creates a connector whose MBeamServerConnection will point to the
-     * given sub name space inside the source connector.
-     * @see JMXNamespace
-     **/
-    public static JMXConnector cd(final JMXConnector source,
-                                  final String toNamespace,
-                                  final boolean closeable)
-        throws IOException {
-
-        checkNonNull(source, "JMXConnector");
-
-        if (toNamespace == null || toNamespace.equals(""))
-            return source;
-
-        return new JMXNamespaceConnector(source,toNamespace,closeable);
-    }
-
-
-    /**
-     * Returns a JMX Connector that will use an {@link EventClient}
-     * to subscribe for notifications. If the server doesn't have
-     * an {@link EventClientDelegateMBean}, then the connector will
-     * use the legacy notification mechanism instead.
-     *
-     * @param source The underlying JMX Connector wrapped by the returned
-     *               connector.
-     * @return A JMX Connector that will uses an {@link EventClient}, if
-     *         available.
-     * @see EventClient#getEventClientConnection(MBeanServerConnection)
-     */
-    public static JMXConnector withEventClient(final JMXConnector source) {
-        checkNonNull(source, "JMXConnector");
-        if (source instanceof JMXAddressable)
-            return new JMXAddressableEventConnector(source);
-        else
-            return new JMXEventConnector(source);
-    }
-
-    public static <T> T checkNonNull(T parameter, String name) {
-        if (parameter == null)
-            throw new IllegalArgumentException(name+" must not be null");
-         return parameter;
-    }
-
-
-}
--- a/src/share/classes/com/sun/jmx/namespace/NamespaceInterceptor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/namespace/NamespaceInterceptor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -24,15 +24,12 @@
  */
 package com.sun.jmx.namespace;
 
-import com.sun.jmx.defaults.JmxProperties;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.logging.Logger;
 
 import javax.management.Attribute;
 import javax.management.AttributeList;
 import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.management.namespace.JMXNamespace;
 import javax.management.namespace.JMXNamespacePermission;
@@ -114,14 +111,12 @@
     }
 
     @Override
-    protected ObjectName toSource(ObjectName targetName)
-            throws MalformedObjectNameException {
+    protected ObjectName toSource(ObjectName targetName) {
         return proc.toSourceContext(targetName, true);
     }
 
     @Override
-    protected ObjectName toTarget(ObjectName sourceName)
-            throws MalformedObjectNameException {
+    protected ObjectName toTarget(ObjectName sourceName) {
         return proc.toTargetContext(sourceName, false);
     }
 
--- a/src/share/classes/com/sun/jmx/namespace/ObjectNameRouter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/namespace/ObjectNameRouter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -27,7 +27,6 @@
 
 import static javax.management.namespace.JMXNamespaces.NAMESPACE_SEPARATOR;
 
-import javax.management.MalformedObjectNameException;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
 
@@ -49,11 +48,6 @@
     final int tlen;
     final boolean identity;
 
-
-    public ObjectNameRouter(String targetDirName) {
-        this(targetDirName,null);
-    }
-
     /** Creates a new instance of ObjectNameRouter */
     public ObjectNameRouter(final String remove, final String add) {
         this.targetPrefix = (remove==null?"":remove);
@@ -88,11 +82,7 @@
         }
         final String targetDomain =
                 (tlen>0?targetPrefix+NAMESPACE_SEPARATOR+srcDomain:srcDomain);
-        try {
-            return sourceName.withDomain(targetDomain);
-        } catch (MalformedObjectNameException x) {
-            throw new IllegalArgumentException(String.valueOf(sourceName),x);
-        }
+        return sourceName.withDomain(targetDomain);
     }
 
     public final ObjectName toSourceContext(ObjectName targetName,
@@ -118,11 +108,7 @@
         final String sourceDomain =
                 (slen>0?sourcePrefix+NAMESPACE_SEPARATOR+targetDomain:
                     targetDomain);
-        try {
-            return targetName.withDomain(sourceDomain);
-        } catch (MalformedObjectNameException x) {
-            throw new IllegalArgumentException(String.valueOf(targetName),x);
-        }
+        return targetName.withDomain(sourceDomain);
     }
 
     public final ObjectInstance toTargetContext(ObjectInstance sourceMoi,
@@ -186,6 +172,4 @@
             b.append(NAMESPACE_SEPARATOR);
         return b.toString();
     }
-
-
 }
--- a/src/share/classes/com/sun/jmx/namespace/RoutingConnectionProxy.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/namespace/RoutingConnectionProxy.java	Thu Jan 29 18:33:52 2009 -0800
@@ -31,7 +31,6 @@
 import java.util.logging.Logger;
 
 import javax.management.MBeanServerConnection;
-import javax.management.namespace.JMXNamespaces;
 
 
 /**
@@ -61,18 +60,10 @@
      * Creates a new instance of RoutingConnectionProxy
      */
     public RoutingConnectionProxy(MBeanServerConnection source,
-                               String sourceDir) {
-        this(source,sourceDir,"",false);
-    }
-
-    /**
-     * Creates a new instance of RoutingConnectionProxy
-     */
-    public RoutingConnectionProxy(MBeanServerConnection source,
                                String sourceDir,
                                String targetDir,
-                               boolean forwardsContext) {
-        super(source,sourceDir,targetDir,forwardsContext);
+                               boolean probe) {
+        super(source, sourceDir, targetDir, probe);
 
         if (LOG.isLoggable(Level.FINER))
             LOG.finer("RoutingConnectionProxy for " + getSourceNamespace() +
@@ -85,15 +76,13 @@
         final String sourceNs = getSourceNamespace();
         String wrapped = String.valueOf(source());
         if ("".equals(targetNs)) {
-            if (forwardsContext)
-                wrapped = "ClientContext.withDynamicContext("+wrapped+")";
             return "JMXNamespaces.narrowToNamespace("+
                     wrapped+", \""+
                     sourceNs+"\")";
         }
         return this.getClass().getSimpleName()+"("+wrapped+", \""+
                sourceNs+"\", \""+
-               targetNs+"\", "+forwardsContext+")";
+               targetNs+"\")";
     }
 
     static final RoutingProxyFactory
@@ -102,22 +91,16 @@
         <MBeanServerConnection,RoutingConnectionProxy>() {
 
         public RoutingConnectionProxy newInstance(MBeanServerConnection source,
-                String sourcePath, String targetPath,
-                boolean forwardsContext) {
+                String sourcePath, String targetPath, boolean probe) {
             return new RoutingConnectionProxy(source,sourcePath,
-                    targetPath,forwardsContext);
-        }
-
-        public RoutingConnectionProxy newInstance(
-                MBeanServerConnection source, String sourcePath) {
-            return new RoutingConnectionProxy(source,sourcePath);
+                    targetPath, probe);
         }
     };
 
-    public static MBeanServerConnection cd(MBeanServerConnection source,
-            String sourcePath) {
+    public static MBeanServerConnection cd(
+            MBeanServerConnection source, String sourcePath, boolean probe) {
         return RoutingProxy.cd(RoutingConnectionProxy.class, FACTORY,
-                source, sourcePath);
+                source, sourcePath, probe);
     }
 
 }
--- a/src/share/classes/com/sun/jmx/namespace/RoutingMBeanServerConnection.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/namespace/RoutingMBeanServerConnection.java	Thu Jan 29 18:33:52 2009 -0800
@@ -46,7 +46,6 @@
 import javax.management.MBeanInfo;
 import javax.management.MBeanRegistrationException;
 import javax.management.MBeanServerConnection;
-import javax.management.MalformedObjectNameException;
 import javax.management.NotCompliantMBeanException;
 import javax.management.NotificationFilter;
 import javax.management.NotificationListener;
@@ -100,18 +99,17 @@
      * the target name is "foo//X".
      * In the case of cascading - such as in NamespaceInterceptor, this method
      * will convert "foo//X" (the targetName) into "X", the source name.
+     * @throws IllegalArgumentException if the name cannot be converted.
      **/
-    protected abstract ObjectName toSource(ObjectName targetName)
-        throws MalformedObjectNameException;
-
+    protected abstract ObjectName toSource(ObjectName targetName);
     /**
      * Converts a source ObjectName to a target ObjectName.
      * (see description of toSource above for explanations)
      * In the case of cascading - such as in NamespaceInterceptor, this method
      * will convert "X" (the sourceName) into "foo//X", the target name.
+     * @throws IllegalArgumentException if the name cannot be converted.
      **/
-    protected abstract ObjectName toTarget(ObjectName sourceName)
-        throws MalformedObjectNameException;
+    protected abstract ObjectName toTarget(ObjectName sourceName);
 
     /**
      * Can be overridden by subclasses to check the validity of a new
@@ -128,17 +126,12 @@
         }
     }
 
-    // Calls toSource(), Wraps MalformedObjectNameException.
-    ObjectName toSourceOrRuntime(ObjectName targetName)
-        throws RuntimeOperationsException {
+    // Calls toSource(), Wraps IllegalArgumentException.
+    ObjectName toSourceOrRuntime(ObjectName targetName) {
         try {
             return toSource(targetName);
-        } catch (MalformedObjectNameException x) {
-            final IllegalArgumentException x2 =
-                    new IllegalArgumentException(String.valueOf(targetName),x);
-            final RuntimeOperationsException x3 =
-                    new RuntimeOperationsException(x2);
-            throw x3;
+        } catch (RuntimeException x) {
+            throw makeCompliantRuntimeException(x);
         }
     }
 
@@ -376,12 +369,8 @@
         try {
             final ObjectName targetName = toTarget(sourceName);
             return new ObjectInstance(targetName,source.getClassName());
-        } catch (MalformedObjectNameException x) {
-            final IllegalArgumentException x2 =
-                    new IllegalArgumentException(String.valueOf(sourceName),x);
-            final RuntimeOperationsException x3 =
-                    new RuntimeOperationsException(x2);
-            throw x3;
+        } catch (RuntimeException x) {
+            throw makeCompliantRuntimeException(x);
         }
     }
 
--- a/src/share/classes/com/sun/jmx/namespace/RoutingProxy.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/namespace/RoutingProxy.java	Thu Jan 29 18:33:52 2009 -0800
@@ -30,6 +30,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.management.InstanceNotFoundException;
 import javax.management.MBeanException;
 import javax.management.MBeanRegistrationException;
 
@@ -90,17 +91,9 @@
 //     targetNs=<encoded-context> // context must be removed from object name
 //     sourceNs="" // nothing to add...
 //
-// RoutingProxies can also be used on the client side to implement
-// "withClientContext" operations. In that case, the boolean parameter
-// 'forwards context' is set to true, targetNs is "", and sourceNS may
-// also be "". When forwardsContext is true, the RoutingProxy dynamically
-// creates an ObjectNameRouter for each operation - in order to dynamically add
-// the context attached to the thread to the routing ObjectName. This is
-// performed in the getObjectNameRouter() method.
-//
 // Finally, in order to avoid too many layers of wrapping,
 // RoutingConnectionProxy and RoutingServerProxy can be created through a
-// factory method that can concatenate namespace pathes in order to
+// factory method that can concatenate namespace paths in order to
 // return a single RoutingProxy - rather than wrapping a RoutingProxy inside
 // another RoutingProxy. See RoutingConnectionProxy.cd and
 // RoutingServerProxy.cd
@@ -146,25 +139,27 @@
     private final T source;
 
     // The name space we're narrowing to (usually some name space in
-    // the source MBeanServerConnection
+    // the source MBeanServerConnection), e.g. "a" for the namespace
+    // "a//".  This is empty in the case of ClientContext described above.
     private final String                sourceNs;
 
-    // The name space we pretend to be mounted in (usually "")
+    // The name space we pretend to be mounted in.  This is empty except
+    // in the case of ClientContext described above (where it will be
+    // something like "jmx.context//foo=bar".
     private final String                targetNs;
 
     // The name of the JMXNamespace that handles the source name space
     private final ObjectName            handlerName;
     private final ObjectNameRouter      router;
-    final boolean forwardsContext;
     private volatile String             defaultDomain = null;
 
     /**
      * Creates a new instance of RoutingProxy
      */
     protected RoutingProxy(T source,
-                          String sourceNs,
-                          String targetNs,
-                          boolean forwardsContext) {
+                           String sourceNs,
+                           String targetNs,
+                           boolean probe) {
         if (source == null) throw new IllegalArgumentException("null");
         this.sourceNs = JMXNamespaces.normalizeNamespaceName(sourceNs);
 
@@ -177,13 +172,17 @@
             // System.err.println("sourceNs: "+sourceNs);
             this.handlerName =
                 JMXNamespaces.getNamespaceObjectName(this.sourceNs);
-            try {
-                // System.err.println("handlerName: "+handlerName);
-                if (!source.isRegistered(handlerName))
-                    throw new IllegalArgumentException(sourceNs +
-                            ": no such name space");
-            } catch (IOException x) {
-                throw new IllegalArgumentException("source stale: "+x,x);
+            if (probe) {
+                try {
+                    if (!source.isRegistered(handlerName)) {
+                        InstanceNotFoundException infe =
+                                new InstanceNotFoundException(handlerName);
+                        throw new IllegalArgumentException(sourceNs +
+                                ": no such name space", infe);
+                    }
+                } catch (IOException x) {
+                    throw new IllegalArgumentException("source stale: "+x,x);
+                }
             }
         }
         this.source = source;
@@ -191,7 +190,6 @@
             JMXNamespaces.normalizeNamespaceName(targetNs));
         this.router =
                 new ObjectNameRouter(this.targetNs,this.sourceNs);
-        this.forwardsContext = forwardsContext;
 
         if (LOG.isLoggable(Level.FINER))
             LOG.finer("RoutingProxy for " + this.sourceNs + " created");
@@ -200,17 +198,8 @@
     @Override
     public T source() { return source; }
 
-    ObjectNameRouter getObjectNameRouter() {
-// TODO: uncomment this when contexts are added
-//        if (forwardsContext)
-//            return ObjectNameRouter.wrapWithContext(router);
-//        else
-            return router;
-    }
-
     @Override
-    public ObjectName toSource(ObjectName targetName)
-        throws MalformedObjectNameException {
+    public ObjectName toSource(ObjectName targetName) {
         if (targetName == null) return null;
         if (targetName.getDomain().equals("") && targetNs.equals("")) {
             try {
@@ -222,8 +211,7 @@
             if (defaultDomain != null)
                 targetName = targetName.withDomain(defaultDomain);
         }
-        final ObjectNameRouter r = getObjectNameRouter();
-        return r.toSourceContext(targetName,true);
+        return router.toSourceContext(targetName,true);
     }
 
     @Override
@@ -240,11 +228,9 @@
     }
 
     @Override
-    public ObjectName toTarget(ObjectName sourceName)
-        throws MalformedObjectNameException {
+    public ObjectName toTarget(ObjectName sourceName) {
         if (sourceName == null) return null;
-        final ObjectNameRouter r = getObjectNameRouter();
-        return r.toTargetContext(sourceName,false);
+        return router.toTargetContext(sourceName,false);
     }
 
     private Object getAttributeFromHandler(String attributeName)
@@ -357,11 +343,8 @@
     // instance.
     static interface RoutingProxyFactory<T extends MBeanServerConnection,
             R extends RoutingProxy<T>> {
-            R newInstance(T source,
-                    String sourcePath, String targetPath,
-                    boolean forwardsContext);
-            R newInstance(T source,
-                    String sourcePath);
+            public R newInstance(
+                    T source, String sourcePath, String targetPath, boolean probe);
     }
 
     // Performs a narrowDownToNamespace operation.
@@ -377,7 +360,7 @@
     static <T extends MBeanServerConnection, R extends RoutingProxy<T>>
            R cd(Class<R> routingProxyClass,
               RoutingProxyFactory<T,R> factory,
-              T source, String sourcePath) {
+              T source, String sourcePath, boolean probe) {
         if (source == null) throw new IllegalArgumentException("null");
         if (source.getClass().equals(routingProxyClass)) {
             // cast is OK here, but findbugs complains unless we use class.cast
@@ -400,14 +383,13 @@
                 final String path =
                     JMXNamespaces.concat(other.getSourceNamespace(),
                     sourcePath);
-                return factory.newInstance(other.source(),path,"",
-                                           other.forwardsContext);
+                return factory.newInstance(other.source(), path, "", probe);
             }
             // Note: we could do possibly something here - but it would involve
             //       removing part of targetDir, and possibly adding
             //       something to sourcePath.
             //       Too complex to bother! => simply default to stacking...
         }
-        return factory.newInstance(source,sourcePath);
+        return factory.newInstance(source, sourcePath, "", probe);
     }
 }
--- a/src/share/classes/com/sun/jmx/namespace/RoutingServerProxy.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/namespace/RoutingServerProxy.java	Thu Jan 29 18:33:52 2009 -0800
@@ -54,7 +54,6 @@
 import javax.management.QueryExp;
 import javax.management.ReflectionException;
 import javax.management.loading.ClassLoaderRepository;
-import javax.management.namespace.JMXNamespaces;
 
 /**
  * A RoutingServerProxy is an MBeanServer proxy that proxies a
@@ -76,19 +75,11 @@
         extends RoutingProxy<MBeanServer>
         implements MBeanServer {
 
-    /**
-     * Creates a new instance of RoutingServerProxy
-     */
-    public RoutingServerProxy(MBeanServer source,
-                           String sourceNs) {
-        this(source,sourceNs,"",false);
-    }
-
     public RoutingServerProxy(MBeanServer source,
                                 String sourceNs,
                                 String targetNs,
-                                boolean forwardsContext) {
-        super(source,sourceNs,targetNs,forwardsContext);
+                                boolean probe) {
+        super(source, sourceNs, targetNs, probe);
     }
 
     /**
@@ -571,20 +562,15 @@
         FACTORY = new RoutingProxyFactory<MBeanServer,RoutingServerProxy>() {
 
         public RoutingServerProxy newInstance(MBeanServer source,
-                String sourcePath, String targetPath,
-                boolean forwardsContext) {
-            return new RoutingServerProxy(source,sourcePath,
-                    targetPath,forwardsContext);
-        }
-
-        public RoutingServerProxy newInstance(
-                MBeanServer source, String sourcePath) {
-            return new RoutingServerProxy(source,sourcePath);
+                String sourcePath, String targetPath, boolean probe) {
+            return new RoutingServerProxy(
+                    source, sourcePath, targetPath, probe);
         }
     };
 
-    public static MBeanServer cd(MBeanServer source, String sourcePath) {
+    public static MBeanServer cd(
+            MBeanServer source, String sourcePath, boolean probe) {
         return RoutingProxy.cd(RoutingServerProxy.class, FACTORY,
-                source, sourcePath);
+                source, sourcePath, probe);
     }
 }
--- a/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -120,7 +120,7 @@
     private final Collection<ShareBuffer> sharers = new HashSet<ShareBuffer>(1);
 
     public static NotificationBuffer getNotificationBuffer(
-            MBeanServer mbs, Map env) {
+            MBeanServer mbs, Map<String, ?> env) {
 
         if (env == null)
             env = Collections.emptyMap();
--- a/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Thu Jan 29 18:33:52 2009 -0800
@@ -54,7 +54,7 @@
 
 
 public abstract class ClientNotifForwarder {
-    public ClientNotifForwarder(Map env) {
+    public ClientNotifForwarder(Map<String, ?> env) {
         this(null, env);
     }
 
@@ -113,7 +113,7 @@
         private Thread thread;
     }
 
-    public ClientNotifForwarder(ClassLoader defaultClassLoader, Map env) {
+    public ClientNotifForwarder(ClassLoader defaultClassLoader, Map<String, ?> env) {
         maxNotifications = EnvHelp.getMaxFetchNotifNumber(env);
         timeout = EnvHelp.getFetchTimeout(env);
 
--- a/src/share/classes/com/sun/jmx/remote/internal/ProxyInputStream.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/internal/ProxyInputStream.java	Thu Jan 29 18:33:52 2009 -0800
@@ -36,7 +36,7 @@
 import org.omg.CORBA.TypeCode;
 import org.omg.CORBA.portable.BoxedValueHelper;
 
-@SuppressWarnings("deprecation")
+@SuppressWarnings({"deprecation", "rawtypes"})
 public class ProxyInputStream extends org.omg.CORBA_2_3.portable.InputStream {
     public ProxyInputStream(org.omg.CORBA.portable.InputStream in) {
         this.in = in;
--- a/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java	Thu Jan 29 18:33:52 2009 -0800
@@ -59,7 +59,7 @@
 
 
     public ServerNotifForwarder(MBeanServer mbeanServer,
-                                Map env,
+                                Map<String, ?> env,
                                 NotificationBuffer notifBuffer,
                                 String connectionId) {
         this.mbeanServer = mbeanServer;
--- a/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -29,6 +29,6 @@
 import java.rmi.MarshalledObject;
 
 public interface Unmarshal {
-    public Object get(MarshalledObject mo)
+    public Object get(MarshalledObject<?> mo)
             throws IOException, ClassNotFoundException;
 }
--- a/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java	Thu Jan 29 18:33:52 2009 -0800
@@ -26,6 +26,7 @@
 package com.sun.jmx.remote.security;
 
 import com.sun.jmx.mbeanserver.GetPropertyAction;
+import com.sun.jmx.mbeanserver.Util;
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileInputStream;
@@ -146,8 +147,8 @@
     // Initial state
     private Subject subject;
     private CallbackHandler callbackHandler;
-    private Map<String, ?> sharedState;
-    private Map options;
+    private Map<String, Object> sharedState;
+    private Map<String, ?> options;
     private String passwordFile;
     private String passwordFileDisplayName;
     private boolean userSuppliedPasswordFile;
@@ -172,7 +173,7 @@
 
         this.subject = subject;
         this.callbackHandler = callbackHandler;
-        this.sharedState = sharedState;
+        this.sharedState = Util.cast(sharedState);
         this.options = options;
 
         // initialize any configured options
@@ -454,8 +455,8 @@
         if (storePass &&
             !sharedState.containsKey(USERNAME_KEY) &&
             !sharedState.containsKey(PASSWORD_KEY)) {
-            ((Map) sharedState).put(USERNAME_KEY, username);
-            ((Map) sharedState).put(PASSWORD_KEY, password);
+            sharedState.put(USERNAME_KEY, username);
+            sharedState.put(PASSWORD_KEY, password);
         }
 
         // Create a new user principal
--- a/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java	Thu Jan 29 18:33:52 2009 -0800
@@ -87,7 +87,7 @@
      * @exception SecurityException if the authentication mechanism cannot be
      *            initialized.
      */
-    public JMXPluggableAuthenticator(Map env) {
+    public JMXPluggableAuthenticator(Map<?, ?> env) {
 
         String loginConfigName = null;
         String passwordFile = null;
--- a/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Thu Jan 29 18:33:52 2009 -0800
@@ -249,9 +249,8 @@
                     }
                 });
         if (s == null) return; /* security has not been enabled */
-        final Set principals = s.getPrincipals();
-        for (Iterator i = principals.iterator(); i.hasNext(); ) {
-            final Principal p = (Principal) i.next();
+        final Set<Principal> principals = s.getPrincipals();
+        for (Principal p : principals) {
             String grantedAccessLevel;
             synchronized (props) {
                 grantedAccessLevel = props.getProperty(p.getName());
@@ -271,8 +270,8 @@
     }
 
     private void checkValues(Properties props) {
-        Collection c = props.values();
-        for (Iterator i = c.iterator(); i.hasNext(); ) {
+        Collection<?> c = props.values();
+        for (Iterator<?> i = c.iterator(); i.hasNext(); ) {
             final String accessLevel = (String) i.next();
             if (!accessLevel.equals(READONLY) &&
                 !accessLevel.equals(READWRITE)) {
--- a/src/share/classes/com/sun/jmx/remote/util/ClassLoaderWithRepository.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/util/ClassLoaderWithRepository.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -38,7 +38,7 @@
         this.cl2 = cl2;
    }
 
-    protected Class findClass(String name) throws ClassNotFoundException {
+    protected Class<?> findClass(String name) throws ClassNotFoundException {
         try {
             return repository.loadClass(name);
         } catch (ClassNotFoundException cne) {
--- a/src/share/classes/com/sun/jmx/remote/util/ClassLogger.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/util/ClassLogger.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,7 @@
            people to use at least J2SE 1.4.  */
         boolean loaded = false;
         try {
-            Class c = java.util.logging.Logger.class;
+            Class<?> c = java.util.logging.Logger.class;
             loaded = true;
         } catch (Error e) {
             // OK.
--- a/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,3 +1,4 @@
+
 /*
  * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117,7 +118,7 @@
      * <code>jmx.remote.default.class.loader.name</code> is specified
      * and the ClassLoader MBean is not found in <var>mbs</var>.
      */
-    public static ClassLoader resolveServerClassLoader(Map env,
+    public static ClassLoader resolveServerClassLoader(Map<String, ?> env,
                                                        MBeanServer mbs)
         throws InstanceNotFoundException {
 
@@ -194,7 +195,7 @@
      * <code>jmx.remote.default.class.loader</code> is specified
      * and is not an instance of {@link ClassLoader}.
      */
-    public static ClassLoader resolveClientClassLoader(Map env) {
+    public static ClassLoader resolveClientClassLoader(Map<String, ?> env) {
 
         if (env == null)
             return Thread.currentThread().getContextClassLoader();
@@ -241,7 +242,7 @@
 
         try {
             java.lang.reflect.Method getCause =
-                t.getClass().getMethod("getCause", (Class[]) null);
+                t.getClass().getMethod("getCause", (Class<?>[]) null);
             ret = (Throwable)getCause.invoke(t, (Object[]) null);
 
         } catch (Exception e) {
@@ -264,7 +265,7 @@
      * Returns the size of a notification buffer for a connector server.
      * The default value is 1000.
      */
-    public static int getNotifBufferSize(Map env) {
+    public static int getNotifBufferSize(Map<String, ?> env) {
         int defaultQueueSize = 1000; // default value
 
         // keep it for the compability for the fix:
@@ -327,7 +328,7 @@
      * Returns the maximum notification number which a client will
      * fetch every time.
      */
-    public static int getMaxFetchNotifNumber(Map env) {
+    public static int getMaxFetchNotifNumber(Map<String, ?> env) {
         return (int) getIntegerAttribute(env, MAX_FETCH_NOTIFS, 1000, 1,
                                          Integer.MAX_VALUE);
     }
@@ -344,7 +345,7 @@
     /**
      * Returns the timeout for a client to fetch notifications.
      */
-    public static long getFetchTimeout(Map env) {
+    public static long getFetchTimeout(Map<String, ?> env) {
         return getIntegerAttribute(env, FETCH_TIMEOUT, 60000L, 0,
                 Long.MAX_VALUE);
     }
@@ -361,7 +362,7 @@
             "com.sun.jmx.remote.notification.access.controller";
 
     public static NotificationAccessController getNotificationAccessController(
-            Map env) {
+            Map<String, ?> env) {
         return (env == null) ? null :
             (NotificationAccessController) env.get(NOTIF_ACCESS_CONTROLLER);
     }
@@ -378,7 +379,7 @@
      * an entry for <code>name</code> but it does not meet the
      * constraints above.
      */
-    public static long getIntegerAttribute(Map env, String name,
+    public static long getIntegerAttribute(Map<String, ?> env, String name,
                                            long defaultValue, long minValue,
                                            long maxValue) {
         final Object o;
@@ -421,9 +422,8 @@
 
     /* Check that all attributes have a key that is a String.
        Could make further checks, e.g. appropriate types for attributes.  */
-    public static void checkAttributes(Map attributes) {
-        for (Iterator it = attributes.keySet().iterator(); it.hasNext(); ) {
-            Object key = it.next();
+    public static void checkAttributes(Map<?, ?> attributes) {
+        for (Object key : attributes.keySet()) {
             if (!(key instanceof String)) {
                 final String msg =
                     "Attributes contain key that is not a string: " + key;
@@ -455,7 +455,7 @@
         logger.trace("purgeUnserializable", "starts");
         ObjectOutputStream oos = null;
         int i = 0;
-        for (Iterator it = objects.iterator(); it.hasNext(); i++) {
+        for (Iterator<?> it = objects.iterator(); it.hasNext(); i++) {
             Object v = it.next();
 
             if (v == null || v instanceof String) {
@@ -564,18 +564,18 @@
            guarantees that we will never call next() on the corresponding
            iterator.  */
         String sentinelKey = map.lastKey() + "X";
-        Iterator keyIterator = map.keySet().iterator();
-        Iterator stringIterator = hiddenStrings.iterator();
-        Iterator prefixIterator = hiddenPrefixes.iterator();
+        Iterator<String> keyIterator = map.keySet().iterator();
+        Iterator<String> stringIterator = hiddenStrings.iterator();
+        Iterator<String> prefixIterator = hiddenPrefixes.iterator();
 
         String nextString;
         if (stringIterator.hasNext())
-            nextString = (String) stringIterator.next();
+            nextString = stringIterator.next();
         else
             nextString = sentinelKey;
         String nextPrefix;
         if (prefixIterator.hasNext())
-            nextPrefix = (String) prefixIterator.next();
+            nextPrefix = prefixIterator.next();
         else
             nextPrefix = sentinelKey;
 
@@ -583,7 +583,7 @@
            or prefix, remove it. */
     keys:
         while (keyIterator.hasNext()) {
-            String key = (String) keyIterator.next();
+            String key = keyIterator.next();
 
             /* Continue through string-match values until we find one
                that is either greater than the current key, or equal
@@ -591,7 +591,7 @@
             int cmp = +1;
             while ((cmp = nextString.compareTo(key)) < 0) {
                 if (stringIterator.hasNext())
-                    nextString = (String) stringIterator.next();
+                    nextString = stringIterator.next();
                 else
                     nextString = sentinelKey;
             }
@@ -609,7 +609,7 @@
                     continue keys;
                 }
                 if (prefixIterator.hasNext())
-                    nextPrefix = (String) prefixIterator.next();
+                    nextPrefix = prefixIterator.next();
                 else
                     nextPrefix = sentinelKey;
             }
@@ -640,7 +640,7 @@
     /**
      * Returns the server side connection timeout.
      */
-    public static long getServerConnectionTimeout(Map env) {
+    public static long getServerConnectionTimeout(Map<String, ?> env) {
         return getIntegerAttribute(env, SERVER_CONNECTION_TIMEOUT, 120000L,
                                    0, Long.MAX_VALUE);
     }
@@ -656,7 +656,7 @@
     /**
      * Returns the client connection check period.
      */
-    public static long getConnectionCheckPeriod(Map env) {
+    public static long getConnectionCheckPeriod(Map<String, ?> env) {
         return getIntegerAttribute(env, CLIENT_CONNECTION_CHECK_PERIOD, 60000L,
                                    0, Long.MAX_VALUE);
     }
@@ -691,7 +691,7 @@
      * to {@code String}.
      */
     public static boolean computeBooleanFromString(
-            Map env, String prop, boolean systemProperty) {
+            Map<String, ?> env, String prop, boolean systemProperty) {
 
         if (env == null)
             throw new IllegalArgumentException("env map cannot be null");
@@ -744,7 +744,8 @@
      * to {@code String}.
      */
     public static boolean computeBooleanFromString(
-            Map env, String prop, boolean systemProperty, boolean defaultValue) {
+            Map<String, ?> env, String prop,
+            boolean systemProperty, boolean defaultValue) {
 
         if (env == null)
             throw new IllegalArgumentException("env map cannot be null");
@@ -774,7 +775,7 @@
     public static <K, V> Hashtable<K, V> mapToHashtable(Map<K, V> map) {
         HashMap<K, V> m = new HashMap<K, V>(map);
         if (m.containsKey(null)) m.remove(null);
-        for (Iterator i = m.values().iterator(); i.hasNext(); )
+        for (Iterator<?> i = m.values().iterator(); i.hasNext(); )
             if (i.next() == null) i.remove();
         return new Hashtable<K, V>(m);
     }
@@ -783,7 +784,7 @@
      * Returns true if the parameter JMXConnector.USE_EVENT_SERVICE is set to a
      * String equals "true" by ignoring case in the map or in the System.
      */
-    public static boolean eventServiceEnabled(Map env) {
+    public static boolean eventServiceEnabled(Map<String, ?> env) {
         return computeBooleanFromString(env, JMXConnector.USE_EVENT_SERVICE, true);
     }
 
@@ -793,11 +794,29 @@
      * If the property DELEGATE_TO_EVENT_SERVICE is not set, returns
      * a default value of "true".
      */
-    public static boolean delegateToEventService(Map env) {
+    public static boolean delegateToEventService(Map<String, ?> env) {
         return computeBooleanFromString(env,
                 JMXConnectorServer.DELEGATE_TO_EVENT_SERVICE, true, true);
     }
 
+    /**
+     * <p>Name of the attribute that specifies whether a connector server
+     * should not prevent the VM from exiting
+     */
+    public static final String JMX_SERVER_DAEMON = "jmx.remote.x.daemon";
+
+    /**
+     * Returns true if {@value SERVER_DAEMON} is specified in the {@code env}
+     * as a key and its value is a String and it is equal to true ignoring case.
+     *
+     * @param env
+     * @return
+     */
+    public static boolean isServerDaemon(Map<String, ?> env) {
+        return (env != null) &&
+                ("true".equalsIgnoreCase((String)env.get(JMX_SERVER_DAEMON)));
+    }
+
 //    /**
 //     * <p>Name of the attribute that specifies an EventRelay object to use.
 //     */
--- a/src/share/classes/com/sun/jmx/remote/util/EventClientConnection.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/util/EventClientConnection.java	Thu Jan 29 18:33:52 2009 -0800
@@ -138,8 +138,8 @@
             Class<T> interfaceClass, Callable<EventClient> eventClientFactory) {
         final InvocationHandler handler =
                 new EventClientConnection(connection,eventClientFactory);
-        final Class[] interfaces =
-                new Class[] {interfaceClass, EventClientFactory.class};
+        final Class<?>[] interfaces =
+                new Class<?>[] {interfaceClass, EventClientFactory.class};
 
         Object proxy =
                 Proxy.newProxyInstance(interfaceClass.getClassLoader(),
@@ -156,7 +156,7 @@
         // add/remove notification listener are routed to the EventClient
         if (methodName.equals("addNotificationListener")
             || methodName.equals("removeNotificationListener")) {
-            final Class[] sig = method.getParameterTypes();
+            final Class<?>[] sig = method.getParameterTypes();
             if (sig.length>1 &&
                     NotificationListener.class.isAssignableFrom(sig[1])) {
                 return invokeBroadcasterMethod(proxy,method,args);
@@ -164,7 +164,7 @@
         }
 
         // subscribe/unsubscribe are also routed to the EventClient.
-        final Class clazz = method.getDeclaringClass();
+        final Class<?> clazz = method.getDeclaringClass();
         if (clazz.equals(EventClientFactory.class)) {
             return invokeEventClientSubscriberMethod(proxy,method,args);
         }
@@ -319,7 +319,7 @@
             return true;
         if (methodName.equals("equals")
             && Arrays.equals(method.getParameterTypes(),
-                new Class[] {Object.class})
+                new Class<?>[] {Object.class})
                 && isLocal(proxy, method))
             return true;
         return false;
@@ -430,13 +430,11 @@
      *        The {@code EventClient} is created lazily, when it is needed
      *        for the first time. If null, a default factory will be used
      *        (see {@link #createEventClient}).
-     * @return the
+     * @return the MBeanServerConnection.
      **/
     public static MBeanServerConnection getEventConnectionFor(
                     MBeanServerConnection connection,
                     Callable<EventClient> eventClientFactory) {
-        // if c already uses an EventClient no need to create a new one.
-        //
         if (connection instanceof EventClientFactory
             && eventClientFactory != null)
             throw new IllegalArgumentException("connection already uses EventClient");
--- a/src/share/classes/com/sun/jmx/remote/util/OrderClassLoaders.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/jmx/remote/util/OrderClassLoaders.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -32,7 +32,7 @@
         this.cl2 = cl2;
     }
 
-    protected Class findClass(String name) throws ClassNotFoundException {
+    protected Class<?> findClass(String name) throws ClassNotFoundException {
         try {
             return super.findClass(name);
         } catch (ClassNotFoundException cne) {
--- a/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  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
@@ -497,6 +497,10 @@
         delegate.setFixedLengthStreamingMode(contentLength);
     }
 
+    public void setFixedLengthStreamingMode(long contentLength) {
+        delegate.setFixedLengthStreamingMode(contentLength);
+    }
+
     public void setChunkedStreamingMode (int chunklen) {
         delegate.setChunkedStreamingMode(chunklen);
     }
--- a/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java	Thu Jan 29 18:33:52 2009 -0800
@@ -70,10 +70,13 @@
      */
     public static void registerElementById(Element element, String idValue) {
         Document doc = element.getOwnerDocument();
-        WeakHashMap elementMap = (WeakHashMap) docMap.get(doc);
-        if(elementMap == null) {
-            elementMap = new WeakHashMap();
-            docMap.put(doc, elementMap);
+        WeakHashMap elementMap;
+        synchronized (docMap) {
+            elementMap = (WeakHashMap) docMap.get(doc);
+            if (elementMap == null) {
+                elementMap = new WeakHashMap();
+                docMap.put(doc, elementMap);
+            }
         }
         elementMap.put(idValue, new WeakReference(element));
     }
@@ -153,7 +156,10 @@
     private static Element getElementByIdType(Document doc, String id) {
         if (log.isLoggable(java.util.logging.Level.FINE))
             log.log(java.util.logging.Level.FINE, "getElementByIdType() Search for ID " + id);
-        WeakHashMap elementMap = (WeakHashMap) docMap.get(doc);
+        WeakHashMap elementMap;
+        synchronized (docMap) {
+            elementMap = (WeakHashMap) docMap.get(doc);
+        }
         if (elementMap != null) {
             WeakReference weakReference = (WeakReference) elementMap.get(id);
             if (weakReference != null) {
--- a/src/share/classes/com/sun/security/auth/module/Krb5LoginModule.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/security/auth/module/Krb5LoginModule.java	Thu Jan 29 18:33:52 2009 -0800
@@ -86,6 +86,8 @@
  * the principal name from the configuration is used. In the
  * case where the principal property is not set and the principal
  * entry also does not exist, the user is prompted for the name.
+ * When this property of entry is set, and <code>useTicketCache</code>
+ * is set to true, only TGT belonging to this principal is used.
  *
  * <p> The following is a list of configuration options supported
  * for <code>Krb5LoginModule</code>:
@@ -101,18 +103,19 @@
  * to false if you do not want this module to use the ticket cache.
  * (Default is False).
  * This module will
- * search for the tickect
+ * search for the ticket
  * cache in the following locations:
- * For Windows 2000, it will use Local Security Authority (LSA) API
- * to get the TGT. On Solaris and Linux
+ * On Solaris and Linux
  * it will look for the ticket cache in /tmp/krb5cc_<code>uid</code>
  * where the uid is numeric user
  * identifier. If the ticket cache is
- * not available in either of the above locations, or if we are on a
- * different Windows platform,  it will look for the cache as
+ * not available in the above location, or if we are on a
+ * Windows platform, it will look for the cache as
  * {user.home}{file.separator}krb5cc_{user.name}.
  * You can override the ticket cache location by using
- * <code>ticketCache</code>
+ * <code>ticketCache</code>.
+ * For Windows, if a ticket cannot be retrieved from the file ticket cache,
+ * it will use Local Security Authority (LSA) API to get the TGT.
  * <P>
  * <dt><b><code>ticketCache</code></b>:</dt>
  * <dd>Set this to the name of the ticket
@@ -129,20 +132,20 @@
  * <dt><b><code>doNotPrompt</code></b>:</dt>
  * <dd>Set this to true if you do not want to be
  * prompted for the password
- * if credentials can
- * not be obtained from the cache or keytab.(Default is false)
- * If set to true authentication will fail if credentials can
- * not be obtained from the cache or keytab.</dd>
+ * if credentials can not be obtained from the cache, the keytab,
+ * or through shared state.(Default is false)
+ * If set to true, credential must be obtained through cache, keytab,
+ * or shared state. Otherwise, authentication will fail.</dd>
  * <P>
  * <dt><b><code>useKeyTab</code></b>:</dt>
  * <dd>Set this to true if you
  * want the module to get the principal's key from the
  * the keytab.(default value is False)
- * If <code>keyatb</code>
+ * If <code>keytab</code>
  * is not set then
  * the module will locate the keytab from the
- * Kerberos configuration file.</dd>
- * If it is not specifed in the Kerberos configuration file
+ * Kerberos configuration file.
+ * If it is not specified in the Kerberos configuration file
  * then it will look for the file
  * <code>{user.home}{file.separator}</code>krb5.keytab.</dd>
  * <P>
@@ -210,20 +213,34 @@
  *                   exist for the username and password in the shared
  *                   state, or if authentication fails.
  *
- *    clearPass     if, true, this <code>LoginModule</code> clears the
- *                  username and password stored in the module's shared
- *                  state  after both phases of authentication
- *                  (login and commit)  have completed.
+ *    clearPass      if, true, this LoginModule clears the
+ *                   username and password stored in the module's shared
+ *                   state  after both phases of authentication
+ *                   (login and commit) have completed.
  * </pre>
+ * <p>If the principal system property or key is already provided, the value of
+ * "javax.security.auth.login.name" in the shared state is ignored.
+ * <p>When multiple mechanisms to retrieve a ticket or key is provided, the
+ * preference order looks like this:
+ * <ol>
+ * <li>ticket cache
+ * <li>keytab
+ * <li>shared state
+ * <li>user prompt
+ * </ol>
+ * <p>Note that if any step fails, it will fallback to the next step.
+ * There's only one exception, it the shared state step fails and
+ * <code>useFirstPass</code>=true, no user prompt is made.
  * <p>Examples of some configuration values for Krb5LoginModule in
  * JAAS config file and the results are:
  * <ul>
  * <p> <code>doNotPrompt</code>=true;
  * </ul>
- * <p> This is an illegal combination since <code>useTicketCache</code>
- * is not set and the user can not be prompted for the password.
+ * <p> This is an illegal combination since none of <code>useTicketCache</code>,
+ * <code>useKeyTab</code>, <code>useFirstPass</code> and <code>tryFirstPass</code>
+ * is set and the user can not be prompted for the password.
  *<ul>
- * <p> <code>ticketCache</code> = < filename >;
+ * <p> <code>ticketCache</code> = &lt;filename&gt;;
  *</ul>
  * <p> This is an illegal combination since <code>useTicketCache</code>
  * is not set to true and the ticketCache is set. A configuration error
@@ -240,9 +257,9 @@
  *</ul>
  * <p> This is an illegal combination since  <code>storeKey</code> is set to
  * true but the key can not be obtained either by prompting the user or from
- * the keytab.A configuration error will occur.
+ * the keytab, or from the shared state. A configuration error will occur.
  * <ul>
- * <p>  <code>keyTab</code> = < filename > <code>doNotPrompt</code>=true ;
+ * <p>  <code>keyTab</code> = &lt;filename&gt; <code>doNotPrompt</code>=true ;
  * </ul>
  * <p>This is an illegal combination since useKeyTab is not set to true and
  * the keyTab is set. A configuration error will occur.
@@ -260,7 +277,7 @@
  * with the principal and TGT. If the TGT is not available,
  * do not prompt the user, instead fail the authentication.
  * <ul>
- * <p><code>principal</code>=< name ><code>useTicketCache</code> = true
+ * <p><code>principal</code>=&lt;name&gt;<code>useTicketCache</code> = true
  * <code>doNotPrompt</code>=true;
  *</ul>
  * <p> Get the TGT from the default cache for the principal and populate the
@@ -269,9 +286,9 @@
  * authentication will fail.
  * <ul>
  * <p> <code>useTicketCache</code> = true
- * <code>ticketCache</code>=< file name ><code>useKeyTab</code> = true
- * <code> keyTab</code>=< keytab filename >
- * <code>principal</code> = < principal name >
+ * <code>ticketCache</code>=&lt;file name&gt;<code>useKeyTab</code> = true
+ * <code> keyTab</code>=&lt;keytab filename&gt;
+ * <code>principal</code> = &lt;principal name&gt;
  * <code>doNotPrompt</code>=true;
  *</ul>
  * <p>  Search the cache for the principal's TGT. If it is not available
@@ -281,7 +298,7 @@
  * If the key is not available or valid then authentication will fail.
  * <ul>
  * <p><code>useTicketCache</code> = true
- * <code>ticketCache</code>=< file name >
+ * <code>ticketCache</code>=&lt;file name&gt;
  *</ul>
  * <p> The TGT will be obtained from the cache specified.
  * The Kerberos principal name used will be the principal name in
@@ -292,8 +309,8 @@
  * The Subject will be populated with the TGT.
  *<ul>
  * <p> <code>useKeyTab</code> = true
- * <code>keyTab</code>=< keytab filename >
- * <code>principal</code>= < principal name >
+ * <code>keyTab</code>=&lt;keytab filename&gt;
+ * <code>principal</code>= &lt;principal name&gt;
  * <code>storeKey</code>=true;
  *</ul>
  * <p>  The key for the principal will be retrieved from the keytab.
@@ -303,7 +320,7 @@
  * password entered.
  * <ul>
  * <p> <code>useKeyTab</code> = true
- * <code>keyTab</code>=< keytabname >
+ * <code>keyTab</code>=&lt;keytabname&gt;
  * <code>storeKey</code>=true
  * <code>doNotPrompt</code>=true;
  *</ul>
@@ -316,21 +333,23 @@
  * Subject's private credentials set. Otherwise the authentication will
  * fail.
  *<ul>
- * <p><code>useKeyTab</code> = true
- * <code>keyTab</code>=< file name > <code>storeKey</code>=true
- * <code>principal</code>= < principal name >
+ * <p>
  * <code>useTicketCache</code>=true
- * <code>ticketCache</code>=< file name >;
+ * <code>ticketCache</code>=&lt;file name&gt;;
+ * <code>useKeyTab</code> = true
+ * <code>keyTab</code>=&lt;file name&gt; <code>storeKey</code>=true
+ * <code>principal</code>= &lt;principal name&gt;
  *</ul>
- * <p>The principal's key will be retrieved from the keytab and added
- * to the <code>Subject</code>'s private credentials. If the key
- * is not available, the
- * user will be prompted for the password; the key derived from the password
- * will be added to the Subject's private credentials set. The
- * client's TGT will be retrieved from the ticket cache and added to the
+ * <p>
+ * The client's TGT will be retrieved from the ticket cache and added to the
  * <code>Subject</code>'s private credentials. If the TGT is not available
- * in the ticket cache, it will be obtained using the authentication
+ * in the ticket cache, or the TGT's client name does not match the principal
+ * name, Java will use a secret key to obtain the TGT using the authentication
  * exchange and added to the Subject's private credentials.
+ * This secret key will be first retrieved from the keytab. If the key
+ * is not available, the user will be prompted for the password. In either
+ * case, the key derived from the password will be added to the
+ * Subject's private credentials set.
  * <ul>
  * <p><code>isInitiator</code> = false
  *</ul>
@@ -856,11 +875,13 @@
     }
 
     private void validateConfiguration() throws LoginException {
-        if (doNotPrompt && !useTicketCache && !useKeyTab)
+        if (doNotPrompt && !useTicketCache && !useKeyTab
+                && !tryFirstPass && !useFirstPass)
             throw new LoginException
                 ("Configuration Error"
                  + " - either doNotPrompt should be "
-                 + " false or useTicketCache/useKeyTab "
+                 + " false or at least one of useTicketCache, "
+                 + " useKeyTab, tryFirstPass and useFirstPass"
                  + " should be true");
         if (ticketCacheName != null && !useTicketCache)
             throw new LoginException
@@ -872,11 +893,12 @@
             throw new LoginException
                 ("Configuration Error - useKeyTab should be set to true "
                  + "to use the keytab" + keyTabName);
-        if (storeKey && doNotPrompt && !useKeyTab)
+        if (storeKey && doNotPrompt && !useKeyTab
+                && !tryFirstPass && !useFirstPass)
             throw new LoginException
-                ("Configuration Error - either doNotPrompt "
-                 + "should be set to false or "
-                 + "useKeyTab must be set to true for storeKey option");
+                ("Configuration Error - either doNotPrompt should be set to "
+                 + " false or at least one of tryFirstPass, useFirstPass "
+                 + "or useKeyTab must be set to true for storeKey option");
         if (renewTGT && !useTicketCache)
             throw new LoginException
                 ("Configuration Error"
--- a/src/share/classes/com/sun/servicetag/Installer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/servicetag/Installer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -475,7 +475,7 @@
 
         String filename = "/com/sun/servicetag/resources/javase_" +
                 version + "_swordfish.properties";
-        InputStream in = Installer.class.getClass().getResourceAsStream(filename);
+        InputStream in = Installer.class.getResourceAsStream(filename);
         if (in == null) {
             return null;
         }
@@ -813,7 +813,7 @@
                                    locale,
                                    String.valueOf(version)).toString();
             try {
-                in = Installer.class.getClass().getResourceAsStream(resource + ".html");
+                in = Installer.class.getResourceAsStream(resource + ".html");
                 if (in == null) {
                     // if the resource file is missing
                     if (isVerbose()) {
@@ -825,34 +825,39 @@
                     System.out.println("Generating " + f + " from " + resource + ".html");
                 }
 
-                br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
-                pw = new PrintWriter(f, "UTF-8");
-                String line = null;
-                while ((line = br.readLine()) != null) {
-                    String output = line;
-                    if (line.contains(JDK_VERSION_KEY)) {
-                        output = line.replace(JDK_VERSION_KEY, jdkVersion);
-                    } else if (line.contains(JDK_HEADER_PNG_KEY)) {
-                        output = line.replace(JDK_HEADER_PNG_KEY, headerImageSrc);
-                    } else if (line.contains(REGISTRATION_URL_KEY)) {
-                        output = line.replace(REGISTRATION_URL_KEY, registerURL);
-                    } else if (line.contains(REGISTRATION_PAYLOAD_KEY)) {
-                        output = line.replace(REGISTRATION_PAYLOAD_KEY, payload.toString());
+                try {
+                    br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
+                    pw = new PrintWriter(f, "UTF-8");
+                    String line = null;
+                    while ((line = br.readLine()) != null) {
+                        String output = line;
+                        if (line.contains(JDK_VERSION_KEY)) {
+                            output = line.replace(JDK_VERSION_KEY, jdkVersion);
+                        } else if (line.contains(JDK_HEADER_PNG_KEY)) {
+                            output = line.replace(JDK_HEADER_PNG_KEY, headerImageSrc);
+                        } else if (line.contains(REGISTRATION_URL_KEY)) {
+                            output = line.replace(REGISTRATION_URL_KEY, registerURL);
+                        } else if (line.contains(REGISTRATION_PAYLOAD_KEY)) {
+                            output = line.replace(REGISTRATION_PAYLOAD_KEY, payload.toString());
+                        }
+                        pw.println(output);
                     }
-                    pw.println(output);
+                    f.setReadOnly();
+                    pw.flush();
+                } finally {
+                    // It's safe for this finally block to have two close statements
+                    // consecutively as PrintWriter.close doesn't throw IOException.
+                    if (pw != null) {
+                        pw.close();
+                    }
+                    if (br!= null) {
+                        br.close();
+                    }
                 }
-                f.setReadOnly();
-                pw.flush();
             } finally {
-                if (pw != null) {
-                    pw.close();
-                }
                 if (in != null) {
                     in.close();
                 }
-                if (br!= null) {
-                    br.close();
-                }
             }
         }
     }
--- a/src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java	Thu Jan 29 18:33:52 2009 -0800
@@ -62,8 +62,8 @@
             return "Sun Microsystems, Inc";
         }
 
-        // if we're here, then we'll try smbios (type 3)
-        return getSmbiosData("3", "Manufacturer: ");
+        // if we're here, then we'll try smbios (type 4)
+        return getSmbiosData("4", "Manufacturer: ");
     }
 
     /**
--- a/src/share/classes/com/sun/servicetag/SunConnection.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/servicetag/SunConnection.java	Thu Jan 29 18:33:52 2009 -0800
@@ -213,10 +213,16 @@
             con.setRequestProperty("Content-Type", "text/xml;charset=\"utf-8\"");
             con.connect();
 
-            OutputStream out = con.getOutputStream();
-            registration.storeToXML(out);
-            out.flush();
-            out.close();
+            OutputStream out = null;
+            try {
+                out = con.getOutputStream();
+                registration.storeToXML(out);
+                out.flush();
+            } finally {
+                if (out != null) {
+                    out.close();
+                }
+            }
 
             int returnCode = con.getResponseCode();
             if (Util.isVerbose()) {
--- a/src/share/classes/com/sun/servicetag/Util.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/servicetag/Util.java	Thu Jan 29 18:33:52 2009 -0800
@@ -140,11 +140,14 @@
             }
             return e.getMessage();
         } finally {
-            if (r != null) {
-                r.close();
-            }
-            if (err != null) {
-                err.close();
+            try {
+                if (r != null) {
+                    r.close();
+                }
+            } finally {
+                if (err != null) {
+                    err.close();
+                }
             }
         }
     }
--- a/src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java	Thu Jan 29 18:33:52 2009 -0800
@@ -107,11 +107,17 @@
             Process p = pb.start();
             // need this for executing windows commands (at least
             // needed for executing wmic command)
-            BufferedWriter bw = new BufferedWriter(
-                new OutputStreamWriter(p.getOutputStream()));
-            bw.write(13);
-            bw.flush();
-            bw.close();
+            BufferedWriter bw = null;
+            try {
+                bw = new BufferedWriter(
+                         new OutputStreamWriter(p.getOutputStream()));
+                bw.write(13);
+                bw.flush();
+            } finally {
+                if (bw != null) {
+                    bw.close();
+                }
+            }
 
             p.waitFor();
             if (p.exitValue() == 0) {
--- a/src/share/classes/java/awt/EventDispatchThread.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/awt/EventDispatchThread.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/java/net/HttpURLConnection.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/net/HttpURLConnection.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  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
@@ -73,11 +73,24 @@
      * The fixed content-length when using fixed-length streaming mode.
      * A value of <code>-1</code> means fixed-length streaming mode is disabled
      * for output.
+     *
+     * <P> <B>NOTE:</B> {@link #fixedContentLengthLong} is recommended instead
+     * of this field, as it allows larger content lengths to be set.
+     *
      * @since 1.5
      */
     protected int fixedContentLength = -1;
 
     /**
+     * The fixed content-length when using fixed-length streaming mode.
+     * A value of {@code -1} means fixed-length streaming mode is disabled
+     * for output.
+     *
+     * @since 1.7
+     */
+    protected long fixedContentLengthLong = -1;
+
+    /**
      * Returns the key for the <code>n</code><sup>th</sup> header field.
      * Some implementations may treat the <code>0</code><sup>th</sup>
      * header field as special, i.e. as the status line returned by the HTTP
@@ -109,6 +122,9 @@
      * This exception can be queried for the details of the error.
      * <p>
      * This method must be called before the URLConnection is connected.
+     * <p>
+     * <B>NOTE:</B> {@link #setFixedLengthStreamingMode(long)} is recommended
+     * instead of this method as it allows larger content lengths to be set.
      *
      * @param   contentLength The number of bytes which will be written
      *          to the OutputStream.
@@ -135,6 +151,52 @@
         fixedContentLength = contentLength;
     }
 
+    /**
+     * This method is used to enable streaming of a HTTP request body
+     * without internal buffering, when the content length is known in
+     * advance.
+     *
+     * <P> An exception will be thrown if the application attempts to write
+     * more data than the indicated content-length, or if the application
+     * closes the OutputStream before writing the indicated amount.
+     *
+     * <P> When output streaming is enabled, authentication and redirection
+     * cannot be handled automatically. A {@linkplain HttpRetryException} will
+     * be thrown when reading the response if authentication or redirection
+     * are required. This exception can be queried for the details of the
+     * error.
+     *
+     * <P> This method must be called before the URLConnection is connected.
+     *
+     * <P> The content length set by invoking this method takes precedence
+     * over any value set by {@link #setFixedLengthStreamingMode(int)}.
+     *
+     * @param  contentLength
+     *         The number of bytes which will be written to the OutputStream.
+     *
+     * @throws  IllegalStateException
+     *          if URLConnection is already connected or if a different
+     *          streaming mode is already enabled.
+     *
+     * @throws  IllegalArgumentException
+     *          if a content length less than zero is specified.
+     *
+     * @since 1.7
+     */
+    public void setFixedLengthStreamingMode(long contentLength) {
+        if (connected) {
+            throw new IllegalStateException("Already connected");
+        }
+        if (chunkLength != -1) {
+            throw new IllegalStateException(
+                "Chunked encoding streaming mode set");
+        }
+        if (contentLength < 0) {
+            throw new IllegalArgumentException("invalid content length");
+        }
+        fixedContentLengthLong = contentLength;
+    }
+
     /* Default chunk size (including chunk header) if not specified;
      * we want to keep this in sync with the one defined in
      * sun.net.www.http.ChunkedOutputStream
@@ -170,7 +232,7 @@
         if (connected) {
             throw new IllegalStateException ("Can't set streaming mode: already connected");
         }
-        if (fixedContentLength != -1) {
+        if (fixedContentLength != -1 || fixedContentLengthLong != -1) {
             throw new IllegalStateException ("Fixed length streaming mode set");
         }
         chunkLength = chunklen <=0? DEFAULT_CHUNK_SIZE : chunklen;
--- a/src/share/classes/java/nio/Buffer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/nio/Buffer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -543,6 +543,10 @@
         return mark;
     }
 
+    final void discardMark() {                          // package-private
+        mark = -1;
+    }
+
     static void checkBounds(int off, int len, int size) { // package-private
         if ((off | len | (off + len) | (size - (off + len))) < 0)
             throw new IndexOutOfBoundsException();
--- a/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -150,6 +150,7 @@
         sb.compact();
         position(rem);
         limit(capacity());
+        discardMark();
         return this;
 #else[rw]
         throw new ReadOnlyBufferException();
--- a/src/share/classes/java/nio/Direct-X-Buffer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/nio/Direct-X-Buffer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -365,6 +365,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << $LG_BYTES_PER_VALUE$);
         position(rem);
         limit(capacity());
+        discardMark();
         return this;
 #else[rw]
         throw new ReadOnlyBufferException();
--- a/src/share/classes/java/nio/Heap-X-Buffer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/nio/Heap-X-Buffer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -222,6 +222,7 @@
         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
         position(remaining());
         limit(capacity());
+        discardMark();
         return this;
 #else[rw]
         throw new ReadOnlyBufferException();
--- a/src/share/classes/java/nio/channels/Channels.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/nio/channels/Channels.java	Thu Jan 29 18:33:52 2009 -0800
@@ -65,6 +65,10 @@
 
     private Channels() { }              // No instantiation
 
+    private static void checkNotNull(Object o, String name) {
+        if (o == null)
+            throw new NullPointerException("\"" + name + "\" is null!");
+    }
 
     /**
      * Write all remaining bytes in buffer to the given channel.
@@ -120,6 +124,7 @@
      * @return  A new input stream
      */
     public static InputStream newInputStream(ReadableByteChannel ch) {
+        checkNotNull(ch, "ch");
         return new sun.nio.ch.ChannelInputStream(ch);
     }
 
@@ -138,6 +143,8 @@
      * @return  A new output stream
      */
     public static OutputStream newOutputStream(final WritableByteChannel ch) {
+        checkNotNull(ch, "ch");
+
         return new OutputStream() {
 
                 private ByteBuffer bb = null;
@@ -193,9 +200,7 @@
      * @return  A new readable byte channel
      */
     public static ReadableByteChannel newChannel(final InputStream in) {
-        if (in == null) {
-            throw new NullPointerException();
-        }
+        checkNotNull(in, "in");
 
         if (in instanceof FileInputStream &&
             FileInputStream.class.equals(in.getClass())) {
@@ -270,9 +275,7 @@
      * @return  A new writable byte channel
      */
     public static WritableByteChannel newChannel(final OutputStream out) {
-        if (out == null) {
-            throw new NullPointerException();
-        }
+        checkNotNull(out, "out");
 
         if (out instanceof FileOutputStream &&
             FileOutputStream.class.equals(out.getClass())) {
@@ -357,8 +360,8 @@
                                    CharsetDecoder dec,
                                    int minBufferCap)
     {
-        dec.reset();
-        return StreamDecoder.forDecoder(ch, dec, minBufferCap);
+        checkNotNull(ch, "ch");
+        return StreamDecoder.forDecoder(ch, dec.reset(), minBufferCap);
     }
 
     /**
@@ -393,6 +396,7 @@
     public static Reader newReader(ReadableByteChannel ch,
                                    String csName)
     {
+        checkNotNull(csName, "csName");
         return newReader(ch, Charset.forName(csName).newDecoder(), -1);
     }
 
@@ -425,8 +429,8 @@
                                    final CharsetEncoder enc,
                                    final int minBufferCap)
     {
-        enc.reset();
-        return StreamEncoder.forEncoder(ch, enc, minBufferCap);
+        checkNotNull(ch, "ch");
+        return StreamEncoder.forEncoder(ch, enc.reset(), minBufferCap);
     }
 
     /**
@@ -461,6 +465,7 @@
     public static Writer newWriter(WritableByteChannel ch,
                                    String csName)
     {
+        checkNotNull(csName, "csName");
         return newWriter(ch, Charset.forName(csName).newEncoder(), -1);
     }
 
--- a/src/share/classes/java/nio/channels/SelectableChannel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/nio/channels/SelectableChannel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2001 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -191,6 +191,9 @@
      * @throws  ClosedChannelException
      *          If this channel is closed
      *
+     * @throws  ClosedSelectorException
+     *          If the selector is closed
+     *
      * @throws  IllegalBlockingModeException
      *          If this channel is in blocking mode
      *
@@ -246,6 +249,9 @@
      * @throws  ClosedChannelException
      *          If this channel is closed
      *
+     * @throws  ClosedSelectorException
+     *          If the selector is closed
+     *
      * @throws  IllegalBlockingModeException
      *          If this channel is in blocking mode
      *
--- a/src/share/classes/java/nio/channels/spi/AbstractSelectableChannel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/nio/channels/spi/AbstractSelectableChannel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -175,6 +175,16 @@
      * the selector is invoked while holding the appropriate locks.  The
      * resulting key is added to this channel's key set before being returned.
      * </p>
+     *
+     * @throws  ClosedSelectorException {@inheritDoc}
+     *
+     * @throws  IllegalBlockingModeException {@inheritDoc}
+     *
+     * @throws  IllegalSelectorException {@inheritDoc}
+     *
+     * @throws  CancelledKeyException {@inheritDoc}
+     *
+     * @throws  IllegalArgumentException {@inheritDoc}
      */
     public final SelectionKey register(Selector sel, int ops,
                                        Object att)
--- a/src/share/classes/java/security/cert/CertPathValidatorException.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/security/cert/CertPathValidatorException.java	Thu Jan 29 18:33:52 2009 -0800
@@ -113,7 +113,7 @@
      * permitted, and indicates that the cause is nonexistent or unknown.)
      */
     public CertPathValidatorException(Throwable cause) {
-        this(null, cause);
+        this((cause == null ? null : cause.toString()), cause);
     }
 
     /**
--- a/src/share/classes/java/text/SimpleDateFormat.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/java/text/SimpleDateFormat.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/crypto/Cipher.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/crypto/Cipher.java	Thu Jan 29 18:33:52 2009 -0800
@@ -2377,7 +2377,7 @@
      * For more information on default key size in JCE jurisdiction
      * policy files, please see Appendix E in the
      * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppE">
+     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppC">
      * Java Cryptography Architecture Reference Guide</a>.
      *
      * @param transformation the cipher transformation.
--- a/src/share/classes/javax/management/AttributeList.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/AttributeList.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -27,17 +27,23 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
- * Represents a list of values for attributes of an MBean. The methods
- * used for the insertion of {@link javax.management.Attribute
- * Attribute} objects in the <CODE>AttributeList</CODE> overrides the
- * corresponding methods in the superclass
- * <CODE>ArrayList</CODE>. This is needed in order to insure that the
- * objects contained in the <CODE>AttributeList</CODE> are only
- * <CODE>Attribute</CODE> objects. This avoids getting an exception
- * when retrieving elements from the <CODE>AttributeList</CODE>.
+ * <p>Represents a list of values for attributes of an MBean.  See the
+ * {@link MBeanServerConnection#getAttributes getAttributes} and
+ * {@link MBeanServerConnection#setAttributes setAttributes} methods of
+ * {@link MBeanServer} and {@link MBeanServerConnection}.</p>
+ *
+ * <p id="type-safe">For compatibility reasons, it is possible, though
+ * highly discouraged, to add objects to an {@code AttributeList} that are
+ * not instances of {@code Attribute}.  However, an {@code AttributeList}
+ * can be made <em>type-safe</em>, which means that an attempt to add
+ * an object that is not an {@code Attribute} will produce an {@code
+ * IllegalArgumentException}.  An {@code AttributeList} becomes type-safe
+ * when the method {@link #asList()} is called on it.</p>
  *
  * @since 1.5
  */
@@ -58,8 +64,8 @@
 */
 public class AttributeList extends ArrayList<Object> {
 
-    private transient boolean typeSafe;
-    private transient boolean tainted;
+    private transient volatile boolean typeSafe;
+    private transient volatile boolean tainted;
 
     /* Serial version */
     private static final long serialVersionUID = -4077085769279709076L;
@@ -124,7 +130,7 @@
 
         // Check for non-Attribute objects
         //
-        checkTypeSafe(list);
+        adding(list);
 
         // Build the List<Attribute>
         //
@@ -132,6 +138,56 @@
     }
 
     /**
+     * <p>Constructs an {@code AttributeList} containing the elements of
+     * the {@code Map} specified, in the order in which they appear in the
+     * {@code Map}'s {@link Map#entrySet entrySet}.  For each <em>{@code
+     * key}</em> and <em>{@code value}</em> in the {@code Map}, the constructed
+     * {@code AttributeList} will contain {@link Attribute#Attribute
+     * Attribute(<em>key</em>, <em>value</em>)}.</p>
+     *
+     * @param map the {@code Map} defining the elements of the new
+     * {@code AttributeList}.
+     */
+    public AttributeList(Map<String, ?> map) {
+        for (Map.Entry<String, ?> entry : map.entrySet())
+            add(new Attribute(entry.getKey(), entry.getValue()));
+        typeSafe = true;
+    }
+
+    /**
+     * <p>Return a {@code Map} that is a snapshot of the values in this
+     * {@code AttributeList}.  Each key in the {@code Map} is the {@linkplain
+     * Attribute#getName() name} of an {@code Attribute} in the list, and each
+     * value is the corresponding {@linkplain Attribute#getValue() value} of
+     * that {@code Attribute}.  The {@code AttributeList} and the {@code Map}
+     * are unrelated after the call, that is, changes to one do not affect the
+     * other.</p>
+     *
+     * <p>If the {@code AttributeList} contains more than one {@code Attribute}
+     * with the same name, then the {@code Map} will contain an entry
+     * for that name where the value is that of the last of those {@code
+     * Attribute}s.</p>
+     *
+     * @return the new {@code Map}.
+     *
+     * @throws IllegalArgumentException if this {@code AttributeList} contains
+     * an element that is not an {@code Attribute}.
+     */
+    public Map<String, Object> toMap() {
+        Map<String, Object> map = new LinkedHashMap<String, Object>();
+
+        // We can't call adding(this) because we're not necessarily typeSafe
+        if (tainted)
+            throw new IllegalArgumentException("AttributeList contains non-Attribute");
+
+        for (Object x : this) {
+            Attribute a = (Attribute) x;
+            map.put(a.getName(), a.getValue());
+        }
+        return map;
+    }
+
+    /**
      * Return a view of this list as a {@code List<Attribute>}.
      * Changes to the returned value are reflected by changes
      * to the original {@code AttributeList} and vice versa.
@@ -154,12 +210,10 @@
      */
     @SuppressWarnings("unchecked")
     public List<Attribute> asList() {
-        if (!typeSafe) {
-            if (tainted)
-                checkTypeSafe(this);
-            typeSafe = true;
-        }
-        return (List<Attribute>) (List) this;
+        typeSafe = true;
+        if (tainted)
+            adding((Collection<?>) this);  // will throw IllegalArgumentException
+        return (List<Attribute>) (List<?>) this;
     }
 
     /**
@@ -175,7 +229,7 @@
      * Inserts the attribute specified as an element at the position specified.
      * Elements with an index greater than or equal to the current position are
      * shifted up. If the index is out of range (index < 0 || index >
-     * size() a RuntimeOperationsException should be raised, wrapping the
+     * size()) a RuntimeOperationsException should be raised, wrapping the
      * java.lang.IndexOutOfBoundsException thrown.
      *
      * @param object  The <CODE>Attribute</CODE> object to be inserted.
@@ -245,8 +299,7 @@
     public boolean addAll(int index, AttributeList list)  {
         try {
             return super.addAll(index, list);
-        }
-        catch (IndexOutOfBoundsException e) {
+        } catch (IndexOutOfBoundsException e) {
             throw new RuntimeOperationsException(e,
                 "The specified index is out of range");
         }
@@ -258,96 +311,77 @@
      * been called on this instance.
      */
 
+    /**
+     * {@inheritDoc}
+     * @throws IllegalArgumentException if this {@code AttributeList} is
+     * <a href="#type-safe">type-safe</a> and {@code element} is not an
+     * {@code Attribute}.
+     */
     @Override
-    public boolean add(Object o) {
-        if (!tainted)
-            tainted = isTainted(o);
-        if (typeSafe)
-            checkTypeSafe(o);
-        return super.add(o);
+    public boolean add(Object element) {
+        adding(element);
+        return super.add(element);
     }
 
+    /**
+     * {@inheritDoc}
+     * @throws IllegalArgumentException if this {@code AttributeList} is
+     * <a href="#type-safe">type-safe</a> and {@code element} is not an
+     * {@code Attribute}.
+     */
     @Override
     public void add(int index, Object element) {
-        if (!tainted)
-            tainted = isTainted(element);
-        if (typeSafe)
-            checkTypeSafe(element);
+        adding(element);
         super.add(index, element);
     }
 
+    /**
+     * {@inheritDoc}
+     * @throws IllegalArgumentException if this {@code AttributeList} is
+     * <a href="#type-safe">type-safe</a> and {@code c} contains an
+     * element that is not an {@code Attribute}.
+     */
     @Override
     public boolean addAll(Collection<?> c) {
-        if (!tainted)
-            tainted = isTainted(c);
-        if (typeSafe)
-            checkTypeSafe(c);
+        adding(c);
         return super.addAll(c);
     }
 
-    @Override
-    public boolean addAll(int index, Collection<?> c) {
-        if (!tainted)
-            tainted = isTainted(c);
-        if (typeSafe)
-            checkTypeSafe(c);
-        return super.addAll(index, c);
-    }
-
-    @Override
-    public Object set(int index, Object element) {
-        if (!tainted)
-            tainted = isTainted(element);
-        if (typeSafe)
-            checkTypeSafe(element);
-        return super.set(index, element);
-    }
-
     /**
-     * IllegalArgumentException if o is a non-Attribute object.
+     * {@inheritDoc}
+     * @throws IllegalArgumentException if this {@code AttributeList} is
+     * <a href="#type-safe">type-safe</a> and {@code c} contains an
+     * element that is not an {@code Attribute}.
      */
-    private static void checkTypeSafe(Object o) {
-        try {
-            o = (Attribute) o;
-        } catch (ClassCastException e) {
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * IllegalArgumentException if c contains any non-Attribute objects.
-     */
-    private static void checkTypeSafe(Collection<?> c) {
-        try {
-            Attribute a;
-            for (Object o : c)
-                a = (Attribute) o;
-        } catch (ClassCastException e) {
-            throw new IllegalArgumentException(e);
-        }
+    @Override
+    public boolean addAll(int index, Collection<?> c) {
+        adding(c);
+        return super.addAll(index, c);
     }
 
     /**
-     * Returns true if o is a non-Attribute object.
+     * {@inheritDoc}
+     * @throws IllegalArgumentException if this {@code AttributeList} is
+     * <a href="#type-safe">type-safe</a> and {@code element} is not an
+     * {@code Attribute}.
      */
-    private static boolean isTainted(Object o) {
-        try {
-            checkTypeSafe(o);
-        } catch (IllegalArgumentException e) {
-            return true;
-        }
-        return false;
+    @Override
+    public Object set(int index, Object element) {
+        adding(element);
+        return super.set(index, element);
     }
 
-    /**
-     * Returns true if c contains any non-Attribute objects.
-     */
-    private static boolean isTainted(Collection<?> c) {
-        try {
-            checkTypeSafe(c);
-        } catch (IllegalArgumentException e) {
-            return true;
-        }
-        return false;
+    private void adding(Object x) {
+        if (x == null || x instanceof Attribute)
+            return;
+        if (typeSafe)
+            throw new IllegalArgumentException("Not an Attribute: " + x);
+        else
+            tainted = true;
+    }
+
+    private void adding(Collection<?> c) {
+        for (Object x : c)
+            adding(x);
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/javax/management/ClientContext.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,1091 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.management;
+
+import com.sun.jmx.interceptor.SingleMBeanForwarder;
+import com.sun.jmx.namespace.RoutingConnectionProxy;
+import com.sun.jmx.namespace.RoutingProxy;
+import com.sun.jmx.namespace.RoutingServerProxy;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
+import java.util.concurrent.Callable;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import static javax.management.namespace.JMXNamespaces.NAMESPACE_SEPARATOR;
+import javax.management.namespace.JMXNamespaces;
+import javax.management.namespace.JMXNamespace;
+import javax.management.namespace.JMXNamespaceMBean;
+import javax.management.namespace.MBeanServerSupport;
+import javax.management.remote.IdentityMBeanServerForwarder;
+import javax.management.remote.MBeanServerForwarder;
+
+/**
+ * <p>Methods to communicate a client context to MBeans.  A context is
+ * a {@literal Map<String, String>} that is provided by the client and
+ * that an MBean can consult using the {@link #getContext()} method.
+ * The context is set on a per-thread basis and can be consulted by any
+ * code that the target MBean calls within the thread.</p>
+ *
+ * <p>One common usage of client context is to communicate the client's
+ * {@link Locale} to MBeans.  For example, if an MBean has a String attribute
+ * {@code LastProblemDescription}, the value of that attribute could be
+ * a description of the last problem encountered by the MBean, translated
+ * into the client's locale.  Different clients accessing this attribute
+ * from different locales would each see the appropriate version for their
+ * locale.</p>
+ *
+ * <p>The locale case is sufficiently important that it has a special
+ * shorthand, the {@link #getLocale()} method.  This method calls
+ * <code>{@link #getContext()}.get({@link #LOCALE_KEY})</code> and converts the
+ * resultant String into a Locale object.</p>
+ *
+ * <p>Here is what an MBean with a localized {@code LastProblemDescription}
+ * attribute might look like:</p>
+ *
+ * <pre>
+ * public class LocaleSensitive implements LocaleSensitiveMBean {
+ *     ...
+ *     public String getLastProblemDescription() {
+ *         Locale loc = {@link #getLocale() ClientContext.getLocale()};
+ *         ResourceBundle rb = ResourceBundle.getBundle("MyResources", loc);
+ *         String resourceKey = getLastProblemResourceKey();
+ *         return rb.getString(resourceKey);
+ *     }
+ *     ...
+ * }
+ * </pre>
+ *
+ * <p>Here is how a client can communicate its locale to the target
+ * MBean:</p>
+ *
+ * <pre>
+ * JMXConnector connector = JMXConnectorFactory.connect(url);
+ * MBeanServerConnection connection = connector.getMBeanServerConnection();
+ * <b>MBeanServerConnection localizedConnection =
+ *     {@link #withLocale(MBeanServerConnection, Locale)
+ *      ClientContext.withLocale}(connection, Locale.getDefault());</b>
+ * String problem = localizedConnection.getAttribute(
+ *          objectName, "LastProblemDescription");
+ * </pre>
+ *
+ * <p>In the more general case where the client wants to communicate context
+ * other than the locale, it can use {@link #withContext(MBeanServerConnection,
+ * String, String) withContext} instead of {@code withLocale}, and the target
+ * MBean can retrieve the context using {@link #getContext()}.</p>
+ *
+ *
+ * <h3 id="remote-use">Remote use of contexts</h3>
+ *
+ * <p>The various {@code with*} methods, for example {@link
+ * #withLocale(javax.management.MBeanServer, java.util.Locale) withLocale},
+ * transmit the context of each request by encoding it in the ObjectName of
+ * the request.  For example, if a client creates a connection in the
+ * French locale like this...</p>
+ *
+ * <pre>
+ * MBeanServerConnection mbsc = ...;
+ * Locale french = new Locale("fr");
+ * MBeanServerConnection localizedConnection = ClientContext.withLocale(mbsc, french);
+ * </pre>
+ *
+ * <p>...or, equivalently, like this...</p>
+ *
+ * <pre>
+ * MBeanServerConnection localizedConnection =
+ *     ClientContext.withContext(mbsc, {@link #LOCALE_KEY "jmx.locale"}, "fr");
+ * </pre>
+ *
+ * <p>...then the context associates {@code "jmx.locale"} with {@code "fr"}
+ * and a request such as<br>
+ * {@code localizedConnection.getAttribute("java.lang:type=Runtime", "Name")}<br>
+ * is translated into<br>
+ * {@code mbsc.getAttribute("jmx.context//jmx.locale=fr//java.lang:Runtime", "Name")}.<br>
+ * A special {@linkplain javax.management.namespace namespace} {@code jmx.context//}
+ * extracts the context from the string {@code jmx.locale=fr} and establishes
+ * it in the thread that will do<br>
+ * {@code getAttribute("java.lang:Runtime", "Name")}.</p>
+ *
+ * <p>The details of how contexts are encoded into ObjectNames are explained
+ * in the {@link #encode encode} method.</p>
+ *
+ * <p>The namespace {@code jmx.context//} just mentioned is only needed by
+ * remote clients, since local clients can set the context directly using
+ * {@link #doWithContext doWithContext}.  Accordingly, this namespace is not
+ * present by default in the {@code MBeanServer}.  Instead, it is
+ * <em>simulated</em> by the standard RMI connector using a special
+ * {@link MBeanServerForwarder}.  If you are using this connector, you do not
+ * need to do anything special.  Other connectors may or may not simulate this
+ * namespace in the same way.  If the connector server returns true from the
+ * method {@link
+ * javax.management.remote.JMXConnectorServer#supportsSystemMBeanServerForwarder()
+ * supportsSystemMBeanServerForwarder} then it does simulate the namespace.
+ * If you are using another connector, or if you want to be able to use the
+ * {@code with*} methods locally, then you can install the {@code
+ * MBeanServerForwarder} yourself as described in the method {@link
+ * #newContextForwarder newContextForwarder}.</p>
+ */
+public class ClientContext {
+    /**
+     * <p>The context key for the client locale.  The string associated with
+     * this key is an encoded locale such as {@code en_US} which could be
+     * returned by {@link Locale#toString()}.</p>
+     */
+    public static final String LOCALE_KEY = "jmx.locale";
+
+    private static final Logger LOG =
+            Logger.getLogger("javax.management.context");
+
+    /**
+     * <p>The namespace that implements contexts, {@value}.</p>
+     */
+    public static final String
+            NAMESPACE = "jmx.context";
+    private static final String NAMESPACE_PLUS_SEP =
+            NAMESPACE + NAMESPACE_SEPARATOR;
+    static final ObjectName CLIENT_CONTEXT_NAMESPACE_HANDLER =
+            ObjectName.valueOf(NAMESPACE_PLUS_SEP + ":" +
+                    JMXNamespace.TYPE_ASSIGNMENT);
+    private static final ObjectName NAMESPACE_HANDLER_WITHOUT_NAMESPACE =
+            ObjectName.valueOf(":" + JMXNamespace.TYPE_ASSIGNMENT);
+
+    private static final ThreadLocal<Map<String, String>> contextThreadLocal =
+            new InheritableThreadLocal<Map<String, String>>() {
+        @Override
+        protected Map<String, String> initialValue() {
+            return Collections.emptyMap();
+        }
+    };
+
+    /** There are no instances of this class. */
+    private ClientContext() {
+    }
+
+    /**
+     * <p>Get the client context associated with the current thread.
+     *
+     * @return the client context associated with the current thread.
+     * This may be an empty Map, but it cannot be null.  The returned
+     * Map cannot be modified.
+     */
+    public static Map<String, String> getContext() {
+        return Collections.unmodifiableMap(contextThreadLocal.get());
+    }
+
+    /**
+     * <p>Get the client locale associated with the current thread.
+     * If the client context includes the {@value #LOCALE_KEY} key
+     * then the returned value is the Locale encoded in that key.
+     * Otherwise the returned value is the {@linkplain Locale#getDefault()
+     * default locale}.
+     *
+     * @return the client locale.
+     */
+    public static Locale getLocale() {
+        String localeS = getContext().get(LOCALE_KEY);
+        if (localeS == null)
+            return Locale.getDefault();
+        // Parse the locale string.  Why isn't there a method in Locale for this?
+        String language, country, variant;
+        int ui = localeS.indexOf('_');
+        if (ui < 0) {
+            language = localeS;
+            country = variant = "";
+        } else {
+            language = localeS.substring(0, ui);
+            localeS = localeS.substring(ui + 1);
+            ui = localeS.indexOf('_');
+            if (ui < 0) {
+                country = localeS;
+                variant = "";
+            } else {
+                country = localeS.substring(0, ui);
+                variant = localeS.substring(ui + 1);
+            }
+        }
+        return new Locale(language, country, variant);
+    }
+
+    /**
+     * <p>Execute the given {@code task} with the client context set to
+     * the given Map.  This Map will be the result of {@link #getContext()}
+     * within the {@code task}.</p>
+     *
+     * <p>The {@code task} may include nested calls to {@code doWithContext}.
+     * The value returned by {@link #getContext} at any point is the Map
+     * provided to the most recent {@code doWithContext} (in the current thread)
+     * that has not yet returned.</p>
+     *
+     * <p>The {@link #getContext()} method returns the same value immediately
+     * after a call to this method as immediately before.  In other words,
+     * {@code doWithContext} only affects the context during the execution of
+     * the {@code task}.</p>
+     *
+     * <p>As an example, suppose you want to get an attribute with whatever
+     * context has already been set, plus the locale set to "fr".  You could
+     * write this:</p>
+     *
+     * <pre>
+     * {@code Map<String, String>} context =
+     *     new {@code HashMap<String, String>}(ClientContext.getContext());
+     * context.put(ClientContext.LOCALE_KEY, "fr");
+     * String lastProblemDescription =
+     *     ClientContext.doWithContext(context, new {@code Callable<String>}() {
+     *         public String call() {
+     *             return (String) mbeanServer.getAttribute(mbean, "LastProblemDescription");
+     *         }
+     *     });
+     * </pre>
+     *
+     * @param <T> the type of value that the task will return.  This type
+     * parameter is usually inferred from the type of the {@code task}
+     * parameter.  For example, if {@code task} is a {@code Callable<String>}
+     * then {@code T} is {@code String}.  If the task does not return a value,
+     * use a {@code Callable<Void>} and return null from its
+     * {@link Callable#call call} method.
+     * @param context the context to use while executing {@code task}.
+     * @param task the task to run with the {@code key}={@code value}
+     * binding.
+     * @return the result of {@link Callable#call() task.call()}.
+     * @throws IllegalArgumentException if either parameter is null, or
+     * if any key in {@code context} is null or empty, or if any value
+     * in {@code context} is null.
+     * @throws Exception If {@link Callable#call() task.call()} throws an
+     * exception, {@code doWithContext} throws the same exception.
+     */
+    public static <T> T doWithContext(Map<String, String> context, Callable<T> task)
+    throws Exception {
+        if (context == null || task == null)
+            throw new IllegalArgumentException("Null parameter");
+        Map<String, String> contextCopy = new TreeMap<String, String>(context);
+        validateContext(contextCopy);
+        Map<String, String> oldContextMap = contextThreadLocal.get();
+        try {
+            contextThreadLocal.set(contextCopy);
+            return task.call();
+        } finally {
+            contextThreadLocal.set(oldContextMap);
+        }
+    }
+
+    private static void validateContext(Map<String, String> context) {
+        for (Map.Entry<String, String> entry : context.entrySet()) {
+            // If the user passes a raw Map rather than a Map<String, String>,
+            // entries could contain objects other than Strings.  If so,
+            // we'll get a ClassCastException here.
+            String key = entry.getKey();
+            String value = entry.getValue();
+            if (key == null || value == null)
+                throw new IllegalArgumentException("Null key or value in context");
+            if (key.equals(""))
+                throw new IllegalArgumentException("Empty key in context");
+        }
+    }
+
+    /**
+     * <p>Return an MBeanServer object that is equivalent to the given
+     * MBeanServer object except that operations on MBeans run with
+     * the given Locale in their {@linkplain #getContext() thread context}.
+     * Note that this will only work if the given MBeanServer supports
+     * contexts, as described <a href="#remote-use">above</a>.</p>
+     *
+     * <p>This method is equivalent to {@link #withContext(MBeanServer,
+     * String, String) withContext}<code>(mbs, {@value LOCALE_KEY},
+     * locale.toString())</code>.</p>
+     *
+     * @throws IllegalArgumentException if either parameter is null, or if
+     * {@code mbs} does not support contexts.  In the second case only,
+     * the cause of the {@code IllegalArgumentException} will be an {@link
+     * InstanceNotFoundException}.
+     */
+    public static MBeanServer withLocale(MBeanServer mbs, Locale locale) {
+        return withLocale(mbs, MBeanServer.class, locale);
+    }
+
+    /**
+     * <p>Return an MBeanServerConnection object that is equivalent to the given
+     * MBeanServerConnection object except that operations on MBeans run with
+     * the given Locale in their {@linkplain #getContext() thread context}.
+     * Note that this will only work if the given MBeanServerConnection supports
+     * contexts, as described <a href="#remote-use">above</a>.</p>
+     *
+     * <p>This method is equivalent to {@link #withContext(MBeanServerConnection,
+     * String, String) withContext}<code>(mbs, {@value LOCALE_KEY},
+     * locale.toString())</code>.</p>
+     *
+     * @throws IllegalArgumentException if either parameter is null, or if
+     * the communication with {@code mbsc} fails, or if {@code mbsc} does not
+     * support contexts.  If the communication with {@code mbsc} fails, the
+     * {@linkplain Throwable#getCause() cause} of this exception will be an
+     * {@code IOException}.  If {@code mbsc} does not support contexts, the
+     * cause will be an {@link InstanceNotFoundException}.
+     */
+    public static MBeanServerConnection withLocale(
+            MBeanServerConnection mbsc, Locale locale) {
+        return withLocale(mbsc, MBeanServerConnection.class, locale);
+    }
+
+    private static <T extends MBeanServerConnection> T withLocale(
+            T mbsc, Class<T> mbscClass, Locale locale) {
+        if (locale == null)
+            throw new IllegalArgumentException("Null locale");
+        return withContext(mbsc, mbscClass, LOCALE_KEY, locale.toString());
+    }
+
+    /**
+     * <p>Return an MBeanServer object that is equivalent to the given
+     * MBeanServer object except that operations on MBeans run with
+     * the given key bound to the given value in their {@linkplain
+     * #getContext() thread context}.
+     * Note that this will only work if the given MBeanServer supports
+     * contexts, as described <a href="#remote-use">above</a>.</p>
+     *
+     * @param mbs the original MBeanServer.
+     * @param key the key to bind in the context of MBean operations
+     * in the returned MBeanServer object.
+     * @param value the value to bind to the key in the context of MBean
+     * operations in the returned MBeanServer object.
+     * @throws IllegalArgumentException if any parameter is null, or
+     * if {@code key} is the empty string, or if {@code mbs} does not support
+     * contexts.  In the last case only, the cause of the {@code
+     * IllegalArgumentException} will be an {@link InstanceNotFoundException}.
+     */
+    public static MBeanServer withContext(
+            MBeanServer mbs, String key, String value) {
+        return withContext(mbs, MBeanServer.class, key, value);
+    }
+
+    /**
+     * <p>Return an MBeanServerConnection object that is equivalent to the given
+     * MBeanServerConnection object except that operations on MBeans run with
+     * the given key bound to the given value in their {@linkplain
+     * #getContext() thread context}.
+     * Note that this will only work if the given MBeanServerConnection supports
+     * contexts, as described <a href="#remote-use">above</a>.</p>
+     *
+     * @param mbsc the original MBeanServerConnection.
+     * @param key the key to bind in the context of MBean operations
+     * in the returned MBeanServerConnection object.
+     * @param value the value to bind to the key in the context of MBean
+     * operations in the returned MBeanServerConnection object.
+     * @throws IllegalArgumentException if any parameter is null, or
+     * if {@code key} is the empty string, or if the communication with {@code
+     * mbsc} fails, or if {@code mbsc} does not support contexts.  If
+     * the communication with {@code mbsc} fails, the {@linkplain
+     * Throwable#getCause() cause} of this exception will be an {@code
+     * IOException}.  If {@code mbsc} does not support contexts, the cause will
+     * be an {@link InstanceNotFoundException}.
+     */
+    public static MBeanServerConnection withContext(
+            MBeanServerConnection mbsc, String key, String value) {
+        return withContext(mbsc, MBeanServerConnection.class, key, value);
+    }
+
+
+    /**
+     * <p>Returns an MBeanServerConnection object that is equivalent to the
+     * given MBeanServerConnection object except that remote operations on
+     * MBeans run with the context that has been established by the client
+     * using {@link #doWithContext doWithContext}.  Note that this will
+     * only work if the remote system supports contexts, as described <a
+     * href="#remote-use">above</a>.</p>
+     *
+     * <p>For example, suppose the remote system does support contexts, and you
+     * have created a {@code JMXConnector} like this:</p>
+     *
+     * <pre>
+     * JMXServiceURL url = ...;
+     * JMXConnector client = JMXConnectorFactory.connect(url);
+     * MBeanServerConnection mbsc = client.getMBeanServerConnection();
+     * <b>mbsc = ClientContext.withDynamicContext(mbsc);</b>
+     * </pre>
+     *
+     * <p>Then if you do this...</p>
+     *
+     * <pre>
+     * MBeanInfo mbi = ClientContext.doWithContext(
+     *     Collections.singletonMap(ClientContext.LOCALE_KEY, "fr"),
+     *     new {@code Callable<MBeanInfo>}() {
+     *         public MBeanInfo call() {
+     *             return mbsc.getMBeanInfo(objectName);
+     *         }
+     *     });
+     * </pre>
+     *
+     * <p>...then the context with the locale set to "fr" will be in place
+     * when the {@code getMBeanInfo} is executed on the remote MBean Server.</p>
+     *
+     * @param mbsc the original MBeanServerConnection.
+     *
+     * @throws IllegalArgumentException if the {@code mbsc} parameter is null,
+     * or if the communication with {@code mbsc} fails, or if {@code mbsc}
+     * does not support contexts.  If the communication with {@code mbsc}
+     * fails, the {@linkplain Throwable#getCause() cause} of this exception
+     * will be an {@code IOException}.  If {@code mbsc} does not support
+     * contexts, the cause will be an {@link InstanceNotFoundException}.
+     */
+    public static MBeanServerConnection withDynamicContext(
+            MBeanServerConnection mbsc) {
+        // Probe mbsc to get the right exception if it's incommunicado or
+        // doesn't support namespaces.
+        JMXNamespaces.narrowToNamespace(mbsc, NAMESPACE);
+        return (MBeanServerConnection) Proxy.newProxyInstance(
+                MBeanServerConnection.class.getClassLoader(),
+                new Class<?>[] {MBeanServerConnection.class},
+                new DynamicContextIH(mbsc));
+    }
+
+    private static class DynamicContextIH implements InvocationHandler {
+        private final MBeanServerConnection mbsc;
+
+        public DynamicContextIH(MBeanServerConnection mbsc) {
+            this.mbsc = mbsc;
+        }
+
+        public Object invoke(Object proxy, Method method, Object[] args)
+                throws Throwable {
+            MBeanServerConnection dynMBSC = withContext(
+                    mbsc, MBeanServerConnection.class, getContext(), false);
+            try {
+                return method.invoke(dynMBSC, args);
+            } catch (InvocationTargetException e) {
+                throw e.getCause();
+            }
+        }
+    }
+
+    private static <T extends MBeanServerConnection> T withContext(
+            T mbsc, Class<T> mbscClass, String key, String value) {
+        return withContext(
+                mbsc, mbscClass, Collections.singletonMap(key, value), true);
+    }
+
+    private static <T extends MBeanServerConnection> T withContext(
+            T mbsc, Class<T> mbscClass, Map<String, String> context,
+            boolean probe) {
+        if (mbsc == null || context == null)
+            throw new IllegalArgumentException("Null parameter");
+        if (context.isEmpty())
+            return mbsc;
+        validateContext(context);
+        Map<String, String> contextMap = null;
+        if (mbsc.getClass() == RoutingServerProxy.class ||
+                mbsc.getClass() == RoutingProxy.class) {
+            RoutingProxy<?> nsp = (RoutingProxy<?>) mbsc;
+            String where = nsp.getSourceNamespace();
+            if (where.startsWith(NAMESPACE_PLUS_SEP)) {
+                /* Try to merge the existing context namespace with the
+                 * new one.  If it doesn't work, we fall back to just
+                 * prefixing jmx.context//key=value, which
+                 * might lead to a name like jmx.c//k1=v1//jmx.c//k2=v2//d:k=v.
+                 */
+                String encodedContext =
+                        where.substring(NAMESPACE_PLUS_SEP.length());
+                if (encodedContext.indexOf(NAMESPACE_SEPARATOR) < 0) {
+                    contextMap = stringToMapOrNull(encodedContext);
+                    if (contextMap != null) {
+                        contextMap.putAll(context);
+                        mbsc = mbscClass.cast(nsp.source());
+                    }
+                }
+            }
+        }
+        if (contextMap == null)
+            contextMap = context;
+        String contextDir = NAMESPACE_PLUS_SEP + mapToString(contextMap);
+        if (mbscClass == MBeanServer.class) {
+            return mbscClass.cast(RoutingServerProxy.cd(
+                    (MBeanServer) mbsc, contextDir, probe));
+        } else if (mbscClass == MBeanServerConnection.class) {
+            return mbscClass.cast(RoutingConnectionProxy.cd(
+                    mbsc, contextDir, probe));
+        } else
+            throw new AssertionError("Bad MBSC: " + mbscClass);
+    }
+
+    /**
+     * <p>Returns an encoded context prefix for ObjectNames.
+     * If the given context is empty, {@code ""} is returned.
+     * Otherwise, this method returns a string of the form
+     * {@code "jmx.context//key=value;key=value;..."}.
+     * For example, if the context has keys {@code "jmx.locale"}
+     * and {@code "xid"} with respective values {@code "fr"}
+     * and {@code "1234"}, this method will return
+     * {@code "jmx.context//jmx.locale=fr;xid=1234"} or
+     * {@code "jmx.context//xid=1234;jmx.locale=fr"}.</p>
+     *
+     * <p>Each key and each value in the encoded string is subject to
+     * encoding as if by the method {@link URLEncoder#encode(String, String)}
+     * with a character encoding of {@code "UTF-8"}, but with the additional
+     * encoding of any {@code *} character as {@code "%2A"}.  This ensures
+     * that keys and values can contain any character.  Without encoding,
+     * characters such as {@code =} and {@code :} would pose problems.</p>
+     *
+     * @param context the context to encode.
+     *
+     * @return the context in encoded form.
+     *
+     * @throws IllegalArgumentException if the {@code context} parameter
+     * is null or if it contains a null key or value.
+     **/
+    public static String encode(Map<String, String> context) {
+        if (context == null)
+            throw new IllegalArgumentException("Null context");
+        if (context.isEmpty())
+            return "";
+        StringBuilder sb = new StringBuilder();
+        for (Map.Entry<String, String> entry : context.entrySet()) {
+            String key = entry.getKey();
+            String value = entry.getValue();
+            if (key == null || value == null)
+                throw new IllegalArgumentException("Null key or value");
+            if (sb.length() > 0)
+                sb.append(";");
+            sb.append(encode(key)).append("=").append(encode(value));
+        }
+        sb.insert(0, NAMESPACE_PLUS_SEP);
+        return sb.toString();
+    }
+
+    /**
+     * <p>Create a new {@link MBeanServerForwarder} that applies the context
+     * received from a client to the current thread.  A client using
+     * one of the various {@code with*} methods (for example {@link
+     * #withContext(MBeanServerConnection, String, String) withContext}) will
+     * encode that context into the {@code ObjectName} of each
+     * {@code MBeanServer} request.  The object returned by this method
+     * decodes the context from that {@code ObjectName} and applies it
+     * as described for {@link #doWithContext doWithContext} while performing
+     * the {@code MBeanServer} request using the {@code ObjectName} without
+     * the encoded context.</p>
+     *
+     * <p>This forwarder can be used in a number of ways:</p>
+     *
+     * <ul>
+     * <li>
+     * <p>To add context decoding to a local {@code MBeanServer}, you can
+     * write:</p>
+     * <pre>
+     * MBeanServer mbs = {@link
+     * java.lang.management.ManagementFactory#getPlatformMBeanServer()
+     * ManagementFactory.getPlatformMBeanServer()};  // for example
+     * mbs = ClientContext.newContextForwarder(mbs, null);
+     * </pre>
+     *
+     * <li>
+     * <p>To add context decoding to a {@linkplain
+     * javax.management.remote.JMXConnectorServer connector server}:</p>
+     * <pre>
+     * JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(...);
+     * MBeanServer nextMBS = cs.getMBeanServer();
+     * MBeanServerForwarder mbsf = ClientContext.newContextForwarder(nextMBS, null);
+     * cs.{@link
+     * javax.management.remote.JMXConnectorServer#setMBeanServerForwarder
+     * setMBeanServerForwarder}(mbsf);
+     * </pre>
+     *
+     * <li>
+     * <p>For connectors, such as the standard RMI connector, that support
+     * a {@linkplain
+     * javax.management.remote.JMXConnectorServer#getSystemMBeanServerForwarder
+     * system chain} of {@code MBeanServerForwarder}s, this forwarder will
+     * be installed in that chain by default.  See
+     * {@link javax.management.remote.JMXConnectorServer#CONTEXT_FORWARDER
+     * JMXConnectorServer.CONTEXT_FORWARDER}.
+     * </p>
+     *
+     * </ul>
+     *
+     * @param nextMBS the next {@code MBeanServer} in the chain of
+     * forwarders, which might be another {@code MBeanServerForwarder} or
+     * a plain {@code MBeanServer}.  This is the object to which {@code
+     * MBeanServer} requests that do not include a context are sent.  It
+     * will be the value of {@link MBeanServerForwarder#getMBeanServer()
+     * getMBeanServer()} on the returned object, and can be changed with {@link
+     * MBeanServerForwarder#setMBeanServer setMBeanServer}.  It can be null but
+     * must be set to a non-null value before any {@code MBeanServer} requests
+     * arrive.
+     *
+     * @param loopMBS the {@code MBeanServer} to which requests that contain
+     * an encoded context should be sent once the context has been decoded.
+     * For example, if the request is {@link MBeanServer#getAttribute
+     * getAttribute}{@code ("jmx.context//jmx.locale=fr//java.lang:type=Runtime",
+     * "Name")}, then the {@linkplain #getContext() context} of the thread
+     * executing that request will have {@code "jmx.locale"} set to {@code "fr"}
+     * while executing {@code loopMBS.getAttribute("java.lang:type=Runtime",
+     * "Name")}.  If this parameter is null, then these requests will be
+     * sent to the newly-created {@code MBeanServerForwarder}.  Usually
+     * the parameter will either be null or will be the result of {@link
+     * javax.management.remote.JMXConnectorServer#getSystemMBeanServerForwarder
+     * getSystemMBeanServerForwarder()} for the connector server in which
+     * this forwarder will be installed.
+     *
+     * @return a new {@code MBeanServerForwarder} that decodes client context
+     * from {@code ObjectName}s.
+     */
+    /*
+     * What we're building here is confusing enough to need a diagram.
+     * The MBSF that we return is actually the composition of two forwarders:
+     * the first one simulates the existence of the MBean
+     * jmx.context//:type=JMXNamespace, and the second one simulates the
+     * existence of the namespace jmx.context//.  Furthermore, that namespace
+     * loops back to the composed forwarder, so that something like
+     * jmx.context//foo=bar//jmxcontext//baz=buh will work.  And the loopback
+     * goes through yet another forwarder, which simulates the existence of
+     * (e.g.) jmx.context//foo=bar//:type=JMXNamespace, which is needed
+     * notably so that narrowToNamespace will work.
+     *
+     *          |     +--------------------------------------------------+
+     *          v     v                                                  |
+     * +----------------+                                                |
+     * | Handler MBSF   |->accesses to jmx.context//:type=JMXNamespace   |
+     * +----------------+    (handled completely here)   +-------------------+
+     *          |                                        | 2nd Handler MBSF  |
+     *          v                                        +-------------------+
+     * +----------------+                                                ^
+     * | Namespace MBSF |->accesses to jmx.context//**-------------------+
+     * +----------------+    (after attaching context to thread)
+     *          |
+     *          v          accesses to anything else
+     *
+     * And finally, we need to ensure that from the outside the composed object
+     * looks like a single forwarder, so that its get/setMBeanServer methods
+     * will do the expected thing.  That's what the anonymous subclass is for.
+     */
+    public static MBeanServerForwarder newContextForwarder(
+            MBeanServer nextMBS, MBeanServer loopMBS) {
+        final MBeanServerForwarder mbsWrapper =
+                new IdentityMBeanServerForwarder(nextMBS);
+        DynamicMBean handlerMBean = new StandardMBean(
+                new JMXNamespace(mbsWrapper), JMXNamespaceMBean.class, false);
+        SingleMBeanForwarder handlerForwarder = new SingleMBeanForwarder(
+                CLIENT_CONTEXT_NAMESPACE_HANDLER, handlerMBean, true) {
+            @Override
+            public MBeanServer getMBeanServer() {
+                return ((MBeanServerForwarder) super.getMBeanServer()).getMBeanServer();
+            }
+
+            @Override
+            public void setMBeanServer(MBeanServer mbs1) {
+                MBeanServerForwarder mbsf1 = (MBeanServerForwarder)
+                        super.getMBeanServer();
+                if (mbsf1 != null)
+                    mbsf1.setMBeanServer(mbs1);
+                else
+                    super.setMBeanServer(mbs1);
+                mbsWrapper.setMBeanServer(mbs1);
+            }
+        };
+        if (loopMBS == null)
+            loopMBS = handlerForwarder;
+        ContextInvocationHandler contextIH =
+                new ContextInvocationHandler(nextMBS, loopMBS);
+        MBeanServerForwarder contextForwarder = newForwarderProxy(contextIH);
+        handlerForwarder.setMBeanServer(contextForwarder);
+        return handlerForwarder;
+    }
+
+    /**
+     * <p>Create a new {@link MBeanServerForwarder} that localizes
+     * descriptions in {@code MBeanInfo} instances returned by
+     * {@link MBeanServer#getMBeanInfo getMBeanInfo}.  The {@code
+     * MBeanServerForwarder} returned by this method passes all {@code
+     * MBeanServer} methods through unchanged to the supplied object, {@code
+     * mbs}, with the exception of {@code getMBeanInfo}.  To handle {@code
+     * getMBeanInfo(objectName)}, it calls {@code mbs.getMBeanInfo(objectName)}
+     * to get an {@code MBeanInfo}, {@code mbi}; it calls {@link
+     * MBeanServer#getClassLoaderFor mbs.getClassLoaderFor(objectName)} to
+     * get a {@code ClassLoader}, {@code cl}; and it calls {@link
+     * #getLocale} to get a {@code Locale}, {@code locale}.  The order
+     * of these three calls is not specified.  Then the result is {@code
+     * mbi.localizeDescriptions(locale, loader)}.</p>
+     *
+     * <p>This forwarder can be used in a number of ways:</p>
+     *
+     * <ul>
+     * <li>
+     * <p>To add description localization to a local {@code MBeanServer}, you
+     * can write:</p>
+     *
+     * <pre>
+     * MBeanServer mbs = {@link
+     * java.lang.management.ManagementFactory#getPlatformMBeanServer()
+     * ManagementFactory.getPlatformMBeanServer()};  // for example
+     * mbs = ClientContext.newLocalizeMBeanInfoForwarder(mbs);
+     * </pre>
+     *
+     * <li>
+     * <p>To add description localization to a {@linkplain
+     * javax.management.remote.JMXConnectorServer connector server}, you will
+     * need to add both a {@linkplain #newContextForwarder context forwarder}
+     * and a localization forwarder, for example like this:</p>
+     *
+     * <pre>
+     * JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(...);
+     * MBeanServer nextMBS = cs.getMBeanServer();
+     * MBeanServerForwarder localizeMBSF =
+     *     ClientContext.newLocalizeMBeanInfoForwarder(nextMBS);
+     * MBeanServerForwarder contextMBSF =
+     *     ClientContext.newContextForwarder(localizeMBSF, null);
+     * cs.{@link
+     * javax.management.remote.JMXConnectorServer#setMBeanServerForwarder
+     * setMBeanServerForwarder}(contextMBSF);
+     * </pre>
+     *
+     * <p>Notice that the context forwarder must run before the localization
+     * forwarder, so that the locale is correctly established when the latter
+     * runs.  So the {@code nextMBS} parameter of the context forwarder must
+     * be the localization forwarder, and not vice versa.</p>
+     *
+     * <li>
+     * <p>For connectors, such as the standard RMI connector, that support
+     * a {@linkplain
+     * javax.management.remote.JMXConnectorServer#getSystemMBeanServerForwarder
+     * system chain} of {@code MBeanServerForwarder}s, the context forwarder and
+     * the localization forwarder will be installed in that chain, in the right
+     * order, if you include
+     * {@link
+     * javax.management.remote.JMXConnectorServer#LOCALIZE_MBEAN_INFO_FORWARDER
+     * LOCALIZE_MBEAN_INFO_FORWARDER} in the environment {@code Map} with
+     * the value {@code "true"}, for example like this:</p>
+     * </p>
+     * <pre>
+     * MBeanServer mbs = ...;
+     * JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://...");
+     * {@code Map<String, Object>} env = new {@code HashMap<String, Object>}();
+     * env.put(JMXConnectorServer.LOCALIZE_MBEAN_INFO_FORWARDER, "true");
+     * JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(
+     *     url, env, mbs);
+     * </pre>
+     *
+     * </ul>
+     *
+     * @param mbs the next {@code MBeanServer} in the chain of
+     * forwarders, which might be another {@code MBeanServerForwarder}
+     * or a plain {@code MBeanServer}.  It will be the value of
+     * {@link MBeanServerForwarder#getMBeanServer() getMBeanServer()}
+     * on the returned object, and can be changed with {@link
+     * MBeanServerForwarder#setMBeanServer setMBeanServer}.  It can be null but
+     * must be set to a non-null value before any {@code MBeanServer} requests
+     * arrive.
+     *
+     * @return a new {@code MBeanServerForwarder} that localizes descriptions
+     * in the result of {@code getMBeanInfo}.
+     */
+    public static MBeanServerForwarder newLocalizeMBeanInfoForwarder(
+            MBeanServer mbs) {
+        return new IdentityMBeanServerForwarder(mbs) {
+            @Override
+            public MBeanInfo getMBeanInfo(ObjectName name)
+                    throws InstanceNotFoundException, IntrospectionException,
+                           ReflectionException {
+                MBeanInfo mbi = super.getMBeanInfo(name);
+                Locale locale = getLocale();
+                ClassLoader loader = getClassLoaderFor(name);
+                return mbi.localizeDescriptions(locale, loader);
+            }
+        };
+    }
+
+    private static MBeanServerForwarder newForwarderProxy(InvocationHandler ih) {
+        return (MBeanServerForwarder) Proxy.newProxyInstance(
+                MBeanServerForwarder.class.getClassLoader(),
+                new Class<?>[] {MBeanServerForwarder.class},
+                ih);
+    }
+
+    // A proxy connection that will strip the 'contextDir' at input (routing),
+    // and put it back at output (createMBean / registerMBean / query* /
+    // getObjectInstance). Usually RoutingProxy / RoutingServerProxy are used
+    // the other way round (they are used for 'cd' - where they need to add
+    // something at input and remove it at output).
+    // For 'cd' operations we create RoutingProxys with a non empty sourceDir,
+    // and a possibly non-empty targetDir. This is the only case where we use
+    // RoutingProxies with an empty sourceDir (sourceDir is what we add at input
+    // and remove at output, targetDir is what we remove at input and add at
+    // output.
+    //
+    // Note that using a transient ContextRoutingConnection
+    // is possible only because RoutingProxys don't rewrite
+    // notifications sources - otherwise we would have to
+    // keep the ContextRoutingConnection - just to preserve
+    // the 'wrapping listeners'
+    //
+    private static final class ContextRoutingConnection
+            extends RoutingServerProxy {
+        public ContextRoutingConnection(MBeanServer source,
+                                 String contextDir) {
+            super(source, "", contextDir, false);
+        }
+
+        // Not really needed - but this is safer and more optimized.
+        // See RoutingProxy for more details.
+        //
+        @Override
+        public Integer getMBeanCount() {
+            return source().getMBeanCount();
+        }
+
+        // Not really needed - but this is safer and more optimized.
+        // See RoutingProxy for more details.
+        //
+        @Override
+        public String[] getDomains() {
+            return source().getDomains();
+        }
+
+        // Not really needed - but this is safer and more optimized.
+        // See RoutingProxy for more details.
+        //
+        @Override
+        public String getDefaultDomain() {
+            return source().getDefaultDomain();
+        }
+
+    }
+
+    private static class ContextInvocationHandler implements InvocationHandler {
+        /*
+         * MBeanServer requests that don't include jmx.context//foo=bar//
+         * are forwarded to forwardMBS, which is the unadorned MBeanServer
+         * that knows nothing about the context namespace.
+         * MBeanServer requests that do include this prefix will
+         * usually (depending on the value of the loopMBS parameter to
+         * newContextForwarder) loop back to the combined MBeanServerForwarder
+         * that first implements
+         * jmx.context//:type=JMXNamespace and then implements
+         * jmx.context//foo=bar//.  The reason is that it is valid
+         * to have jmx.context//foo=bar//jmx.context//baz=buh//, although
+         * usually that will be combined into jmx.context//foo=bar;baz=buh//.
+         *
+         * Before forwarding to loopMBS, we must check for :type=JMXNamespace
+         * so that jmx.context//foo=bar//:type=JMXNamespace will exist.  Its
+         * existence is partial because it must remain "invisible": it should
+         * not show up in queryNames or getMBeanCount even though it does
+         * accept getAttribute and isRegistered and all other methods that
+         * reference a single MBean.
+         */
+        private MBeanServer forwardMBS;
+        private final MBeanServer loopMBS;
+        private static final MBeanServer emptyMBS = new MBeanServerSupport() {
+            @Override
+            public DynamicMBean getDynamicMBeanFor(ObjectName name)
+                    throws InstanceNotFoundException {
+                throw new InstanceNotFoundException(name.toString());
+            }
+
+            @Override
+            protected Set<ObjectName> getNames() {
+                return Collections.emptySet();
+            }
+        };
+
+        ContextInvocationHandler(MBeanServer forwardMBS, MBeanServer loopMBS) {
+            this.forwardMBS = forwardMBS;
+            DynamicMBean handlerMBean = new StandardMBean(
+                    new JMXNamespace(loopMBS), JMXNamespaceMBean.class, false);
+            MBeanServerForwarder handlerMBS = new SingleMBeanForwarder(
+                    NAMESPACE_HANDLER_WITHOUT_NAMESPACE, handlerMBean, false);
+            handlerMBS.setMBeanServer(loopMBS);
+            this.loopMBS = handlerMBS;
+        }
+
+        public Object invoke(Object proxy, final Method method, final Object[] args)
+        throws Throwable {
+            String methodName = method.getName();
+            Class<?>[] paramTypes = method.getParameterTypes();
+
+            // If this is a method from MBeanServerForwarder, handle it here.
+            // There are only two such methods: getMBeanServer() and
+            // setMBeanServer(mbs).
+            if (methodName.equals("getMBeanServer"))
+                return forwardMBS;
+            else if (methodName.equals("setMBeanServer")) {
+                this.forwardMBS = (MBeanServer) args[0];
+                return null;
+            }
+
+            // It is a method from MBeanServer.
+            // Find the first parameter whose declared type is ObjectName,
+            // and see if it is in the context namespace.  If so we need to
+            // trigger the logic for that namespace.  If not, we simply
+            // forward to the next MBeanServer in the chain.  This logic
+            // depends on the fact that if a method in the MBeanServer interface
+            // has a "routing" ObjectName parameter, it is always the first
+            // parameter of that type.  Conversely, if a method has an
+            // ObjectName parameter, then it makes sense to "route" that
+            // method.  Except for deserialize and instantiate, but if we
+            // recognize a context namespace in those methods' ObjectName
+            // parameters it is pretty harmless.
+            int objectNameI = -1;
+            for (int i = 0; i < paramTypes.length; i++) {
+                if (paramTypes[i] == ObjectName.class) {
+                    objectNameI = i;
+                    break;
+                }
+            }
+
+            if (objectNameI < 0)
+                return invoke(method, forwardMBS, args);
+
+            ObjectName target = (ObjectName) args[objectNameI];
+            if (target == null ||
+                    !target.getDomain().startsWith(NAMESPACE_PLUS_SEP))
+                return invoke(method, forwardMBS, args);
+
+            String domain = target.getDomain().substring(NAMESPACE_PLUS_SEP.length());
+
+            // The method routes through the (simulated) context namespace.
+            // Decode the context after it, e.g. jmx.context//jmx.locale=fr//...
+            // If there is no context part, we can throw an exception,
+            // because a forwarder has already handled the unique MBean
+            // jmx.context//:type=JMXNamespace.
+            int sep = domain.indexOf(NAMESPACE_SEPARATOR);
+            if (sep < 0)
+                return invoke(method, emptyMBS, args);  // throw exception
+            final String encodedContext = domain.substring(0, sep);
+
+            if (method.getName().startsWith("query") &&
+                    (encodedContext.contains("*") || encodedContext.contains("?"))) {
+                // Queries like jmx.context//*//d:k=v return
+                // an empty set, consistent with "real" namespaces.
+                return Collections.EMPTY_SET;
+            }
+
+            Map<String, String> ctx = new TreeMap<String, String>(getContext());
+            ctx.putAll(stringToMap(encodedContext));
+
+            return doWithContext(ctx, new Callable<Object>() {
+                public Object call() throws Exception {
+                    // Create a proxy connection that will strip
+                    // "jmx.context//" + encodedContext + "//" on input,
+                    // and put it back on output.
+                    //
+                    // Note that using a transient ContextRoutingConnection
+                    // is possible only because it doesn't rewrite
+                    // notification sources - otherwise we would have to
+                    // keep the ContextRoutingConnection - just to preserve
+                    // the 'wrapping listeners'
+                    //
+                    String namespace = NAMESPACE_PLUS_SEP + encodedContext;
+                    final ContextRoutingConnection route =
+                              new ContextRoutingConnection(loopMBS, namespace);
+
+                    if (LOG.isLoggable(Level.FINE))
+                        LOG.fine("context="+encodedContext);
+                    if (LOG.isLoggable(Level.FINER))
+                        LOG.finer(method.getName()+""+
+                            ((args==null)?"()":(""+Arrays.asList(args))));
+
+                    return invoke(method, route, args);
+                }
+            });
+        }
+
+        private static Object invoke(Method method, Object target, Object[] args)
+                throws Exception {
+            try {
+                return method.invoke(target, args);
+            } catch (InvocationTargetException e) {
+                Throwable cause = e.getCause();
+                if (cause instanceof Error)
+                    throw (Error) cause;
+                throw (Exception) cause;
+            }
+        }
+    }
+
+    private static String mapToString(Map<String, String> map) {
+        StringBuilder sb = new StringBuilder();
+        for (Map.Entry<String, String> entry : map.entrySet()) {
+            String key = encode(entry.getKey());
+            String value = encode(entry.getValue());
+            if (sb.length() > 0)
+                sb.append(";");
+            sb.append(key).append("=").append(value);
+        }
+        return sb.toString();
+    }
+
+    private static Map<String, String> stringToMap(String encodedContext) {
+        Map<String, String> map = stringToMapOrNull(encodedContext);
+        if (map == null) {
+            throw new IllegalArgumentException(
+                    "Invalid encoded context: " + encodedContext);
+        }
+        return map;
+    }
+
+    private static Map<String, String> stringToMapOrNull(String encodedContext) {
+        Map<String, String> map = new LinkedHashMap<String, String>();
+        StringTokenizer stok = new StringTokenizer(encodedContext, ";");
+        while (stok.hasMoreTokens()) {
+            String tok = stok.nextToken();
+            int eq = tok.indexOf('=');
+            if (eq < 0)
+                return null;
+            String key = decode(tok.substring(0, eq));
+            if (key.equals(""))
+                return null;
+            String value = decode(tok.substring(eq + 1));
+            map.put(key, value);
+        }
+        return map;
+    }
+
+    private static String encode(String s) {
+        try {
+            s = URLEncoder.encode(s, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);  // Should not happen
+        }
+        return s.replace("*", "%2A");
+        // The * character is left intact in URL encodings, but for us it
+        // is special (an ObjectName wildcard) so we must map it.
+        // We are assuming that URLDecoder will decode it the same way as any
+        // other hex escape.
+    }
+
+    private static String decode(String s) {
+        try {
+            return URLDecoder.decode(s, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
--- a/src/share/classes/javax/management/DefaultLoaderRepository.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/DefaultLoaderRepository.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -62,7 +62,7 @@
      *
      * @exception ClassNotFoundException The specified class could not be found.
      */
-    public static Class loadClass(String className)
+    public static Class<?> loadClass(String className)
         throws ClassNotFoundException {
         return javax.management.loading.DefaultLoaderRepository.loadClass(className);
     }
@@ -82,7 +82,7 @@
      *
      * @exception ClassNotFoundException The specified class could not be found.
      */
-    public static Class loadClassWithout(ClassLoader loader,String className)
+    public static Class<?> loadClassWithout(ClassLoader loader,String className)
         throws ClassNotFoundException {
         return javax.management.loading.DefaultLoaderRepository.loadClassWithout(loader, className);
     }
--- a/src/share/classes/javax/management/Descriptor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/Descriptor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -35,8 +35,8 @@
 // Javadoc imports:
 import java.lang.management.MemoryUsage;
 import java.util.Arrays;
+import java.util.Locale;
 import java.util.ResourceBundle;
-
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.MXBeanMappingFactory;
 import javax.management.openmbean.OpenMBeanAttributeInfoSupport;
@@ -101,7 +101,7 @@
  *
  * <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr>
  *
- * <tr><td><a name="defaultValue"><i>defaultValue</i></a><td>Object</td>
+ * <tr id="defaultValue"><td><i>defaultValue</i><td>Object</td>
  * <td>MBeanAttributeInfo<br>MBeanParameterInfo</td>
  *
  * <td>Default value for an attribute or parameter.  See
@@ -118,19 +118,22 @@
  * deprecation, for example {@code "1.3 Replaced by the Capacity
  * attribute"}.</td>
  *
- * <tr id="descriptionResourceBundleBaseName">
- * <td>descriptionResource<br>BundleBaseName</td><td>String</td><td>Any</td>
+ * <tr><td id="descriptionResourceBundleBaseName"><i>descriptionResource<br>
+ * BundleBaseName</i></td><td>String</td><td>Any</td>
  *
  * <td>The base name for the {@link ResourceBundle} in which the key given in
  * the {@code descriptionResourceKey} field can be found, for example
- * {@code "com.example.myapp.MBeanResources"}.</td>
+ * {@code "com.example.myapp.MBeanResources"}.  See
+ * {@link MBeanInfo#localizeDescriptions MBeanInfo.localizeDescriptions}.</td>
  *
- * <tr id="descriptionResourceKey">
- * <td>descriptionResourceKey</td><td>String</td><td>Any</td>
+ * <tr><td id="descriptionResourceKey"><i>descriptionResourceKey</i></td>
+ * <td>String</td><td>Any</td>
  *
  * <td>A resource key for the description of this element.  In
  * conjunction with the {@code descriptionResourceBundleBaseName},
- * this can be used to find a localized version of the description.</td>
+ * this can be used to find a localized version of the description.
+ * See {@link MBeanInfo#localizeDescriptions MBeanInfo.localizeDescriptions}.
+ * </td>
  *
  * <tr><td>enabled</td><td>String</td>
  * <td>MBeanAttributeInfo<br>MBeanNotificationInfo<br>MBeanOperationInfo</td>
@@ -144,7 +147,32 @@
  * might be disabled if it cannot currently be emitted but could be in
  * other circumstances.</td>
  *
- * <tr><td><a name="immutableInfo"><i>immutableInfo</i></a><td>String</td>
+ * <tr id="exceptions"><td><i>exceptions</i><td>String[]</td>
+ * <td>MBeanAttributeInfo, MBeanConstructorInfo, MBeanOperationInfo</td>
+ *
+ * <td>The class names of the exceptions that can be thrown when invoking a
+ * constructor or operation, or getting an attribute. Exceptions thrown when
+ * setting an attribute are specified by the field
+ * <a href="#setExceptions">{@code setExceptions}</a>.
+ *
+ * <tr id="exceptionErrorCodes"><td>exceptionErrorCodes</td><td>String[]</td>
+ * <td>MBeanAttributeInfo<br>MBeanConstructorInfo<br>MBeanOperationInfo</td>
+ *
+ * <td>The {@linkplain GenericMBeanException#getErrorCode() error codes}
+ * that can appear in a {@link GenericMBeanException} thrown when getting
+ * this attribute or invoking this operation or constructor.  See also
+ * <a href="#setExceptionErrorCodes">{@code setExceptionErrorCodes}</a>.
+ *
+ * <tr id="exceptionUserDataTypes"><td>exceptionUserDataTypes</td>
+ * <td>{@link javax.management.openmbean.CompositeType}[]</td>
+ * <td>MBeanAttributeInfo<br>MBeanConstructorInfo<br>MBeanOperationInfo</td>
+ *
+ * <td>The types of {@linkplain GenericMBeanException#getUserData() userData}
+ * that can appear in a {@link GenericMBeanException} thrown when getting
+ * this attribute or invoking this operation or constructor.  See also
+ * <a href="#setExceptionUserDataTypes">{@code setExceptionUserDataTypes}</a>.
+ *
+ * <tr id="immutableInfo"><td><i>immutableInfo</i><td>String</td>
  * <td>MBeanInfo</td>
  *
  * <td>The string {@code "true"} or {@code "false"} according as this
@@ -153,9 +181,11 @@
  * the lifetime of the MBean.  Hence, a client can read it once and
  * cache the read value.  When this field is false or absent, there is
  * no such guarantee, although that does not mean that the MBeanInfo
- * will necessarily change.</td>
+ * will necessarily change.  See also the <a
+ * href="MBeanInfo.html#info-changed">{@code "jmx.mbean.info.changed"}</a>
+ * notification.</td>
  *
- * <tr><td>infoTimeout</td><td>String<br>Long</td><td>MBeanInfo</td>
+ * <tr id="infoTimeout"><td>infoTimeout</td><td>String<br>Long</td><td>MBeanInfo</td>
  *
  * <td>The time in milli-seconds that the MBeanInfo can reasonably be
  * expected to be unchanged.  The value can be a {@code Long} or a
@@ -164,9 +194,11 @@
  * that the MBeanInfo is not likely to change within this period and
  * therefore can be cached.  When this field is missing or has the
  * value zero, it is not recommended to cache the MBeanInfo unless it
- * has the {@code immutableInfo} set to {@code true}.</td></tr>
+ * has the {@code immutableInfo} set to {@code true} or it has <a
+ * href="MBeanInfo.html#info-changed">{@code "jmx.mbean.info.changed"}</a> in
+ * its {@link MBeanNotificationInfo} array.</td></tr>
  *
- * <tr><td><a name="interfaceClassName"><i>interfaceClassName</i></a></td>
+ * <tr id="interfaceClassName"><td><i>interfaceClassName</i></td>
  * <td>String</td><td>MBeanInfo</td>
  *
  * <td>The Java interface name for a Standard MBean or MXBean, as
@@ -175,19 +207,26 @@
  * StandardMBean} class will have this field in its MBeanInfo
  * Descriptor.</td>
  *
- * <tr><td><a name="legalValues"><i>legalValues</i></a></td>
+ * <tr id="legalValues"><td><i>legalValues</i></td>
  * <td>{@literal Set<?>}</td><td>MBeanAttributeInfo<br>MBeanParameterInfo</td>
  *
  * <td>Legal values for an attribute or parameter.  See
  * {@link javax.management.openmbean}.</td>
  *
- * <tr><td><a name="maxValue"><i>maxValue</i></a><td>Object</td>
+ * <tr id="locale"><td><i>locale</i></td>
+ * <td>String</td><td>Any</td>
+ *
+ * <td>The {@linkplain Locale locale} of the description in this
+ * {@code MBeanInfo}, {@code MBeanAttributeInfo}, etc, as returned
+ * by {@link Locale#toString()}.</td>
+ *
+ * <tr id="maxValue"><td><i>maxValue</i><td>Object</td>
  * <td>MBeanAttributeInfo<br>MBeanParameterInfo</td>
  *
  * <td>Maximum legal value for an attribute or parameter.  See
  * {@link javax.management.openmbean}.</td>
  *
- * <tr><td><a name="metricType">metricType</a><td>String</td>
+ * <tr id="metricType"><td>metricType</td><td>String</td>
  * <td>MBeanAttributeInfo<br>MBeanOperationInfo</td>
  *
  * <td>The type of a metric, one of the strings "counter" or "gauge".
@@ -200,13 +239,13 @@
  * that can increase or decrease.  Examples might be the number of
  * open connections or a cache hit rate or a temperature reading.
  *
- * <tr><td><a name="minValue"><i>minValue</i></a><td>Object</td>
+ * <tr id="minValue"><td><i>minValue</i><td>Object</td>
  * <td>MBeanAttributeInfo<br>MBeanParameterInfo</td>
  *
  * <td>Minimum legal value for an attribute or parameter.  See
  * {@link javax.management.openmbean}.</td>
  *
- * <tr><td><a name="mxbean"><i>mxbean</i></a><td>String</td>
+ * <tr id="mxbean"><td><i>mxbean</i><td>String</td>
  * <td>MBeanInfo</td>
  *
  * <td>The string {@code "true"} or {@code "false"} according as this
@@ -223,7 +262,14 @@
  * MXBean, if it was not the {@linkplain MXBeanMappingFactory#DEFAULT default}
  * one.</td>
  *
- * <tr><td><a name="openType"><i>openType</i></a><td>{@link OpenType}</td>
+ * <tr><td id="objectNameTemplate"><i>objectNameTemplate</i>
+ * </td><td>String</td>
+ * <td>MBeanInfo</td>
+ *
+ * <td>The template to use to name this MBean. Its value must be compliant with
+ * the specification of the {@link ObjectNameTemplate} annotation.</td>
+ *
+ * <tr id="openType"><td><i>openType</i><td>{@link OpenType}</td>
  * <td>MBeanAttributeInfo<br>MBeanOperationInfo<br>MBeanParameterInfo</td>
  *
  * <td><p>The Open Type of this element.  In the case of {@code
@@ -240,7 +286,7 @@
  * which case it indicates the Open Type that the {@link
  * Notification#getUserData() user data} will have.</td>
  *
- * <tr><td><a name="originalType"><i>originalType</i></a><td>String</td>
+ * <tr id="originalType"><td><i>originalType</i><td>String</td>
  * <td>MBeanAttributeInfo<br>MBeanOperationInfo<br>MBeanParameterInfo</td>
  *
  * <td><p>The original Java type of this element as it appeared in the
@@ -256,6 +302,30 @@
  * href="MXBean.html#type-names">Type Names</a> of the MXBean
  * specification.</p>
  *
+ * <tr id="setExceptions"><td><i>setExceptions</i><td>String[]</td>
+ * <td>MBeanAttributeInfo</td>
+ *
+ * <td>The class names of the exceptions that can be thrown when setting
+ * an attribute. Exceptions thrown when getting an attribute are specified
+ * by the field <a href="#exceptions">{@code exceptions}</a>.
+ *
+ * <tr id="setExceptionErrorCodes"><td>setExceptionErrorCodes</td>
+ * <td>String[]</td><td>MBeanAttributeInfo</td>
+ *
+ * <td>The {@linkplain GenericMBeanException#getErrorCode() error codes}
+ * that can appear in a {@link GenericMBeanException} thrown when setting
+ * this attribute.  See also
+ * <a href="#exceptionErrorCodes">{@code exceptionErrorCodes}</a>.
+ *
+ * <tr id="setExceptionUserDataTypes"><td>setExceptionUserDataTypes</td>
+ * <td>{@link javax.management.openmbean.CompositeType}[]</td>
+ * <td>MBeanAttributeInfo</td>
+ *
+ * <td>The types of {@linkplain GenericMBeanException#getUserData() userData}
+ * that can appear in a {@link GenericMBeanException} thrown when setting
+ * this attribute.  See also
+ * <a href="#exceptionUserDataTypes">{@code exceptionUserDataTypes}</a>.
+ *
  * <tr><td>severity</td><td>String<br>Integer</td>
  * <td>MBeanNotificationInfo</td>
  *
@@ -282,11 +352,132 @@
  *
  * </table>
  *
- * <p>Some additional fields are defined by Model MBeans.  See
- * {@link javax.management.modelmbean.ModelMBeanInfo ModelMBeanInfo}
- * and related classes and the chapter "Model MBeans" of the
- * <a href="http://java.sun.com/products/JavaManagement/download.html">
- * JMX Specification</a>.</p>
+ * <p>Some additional fields are defined by Model MBeans.  See the
+ * information for <a href="modelmbean/ModelMBeanInfo.html#descriptor"><!--
+ * -->{@code ModelMBeanInfo}</a>,
+ * <a href="modelmbean/ModelMBeanAttributeInfo.html#descriptor"><!--
+ * -->{@code ModelMBeanAttributeInfo}</a>,
+ * <a href="modelmbean/ModelMBeanConstructorInfo.html#descriptor"><!--
+ * -->{@code ModelMBeanConstructorInfo}</a>,
+ * <a href="modelmbean/ModelMBeanNotificationInfo.html#descriptor"><!--
+ * -->{@code ModelMBeanNotificationInfo}</a>, and
+ * <a href="modelmbean/ModelMBeanOperationInfo.html#descriptor"><!--
+ * -->{@code ModelMBeanOperationInfo}</a>, as
+ * well as the chapter "Model MBeans" of the <a
+ * href="http://java.sun.com/products/JavaManagement/download.html">JMX
+ * Specification</a>.  The following table summarizes these fields.  Note
+ * that when the Type in this table is Number, a String that is the decimal
+ * representation of a Long can also be used.</p>
+ *
+ * <p>Nothing prevents the use of these fields in MBeans that are not Model
+ * MBeans.  The <a href="#displayName">displayName</a>, <a href="#severity"><!--
+ * -->severity</a>, and <a href="#visibility">visibility</a> fields are of
+ * interest outside Model MBeans, for example.  But only Model MBeans have
+ * a predefined behavior for these fields.</p>
+ *
+ * <table border="1" cellpadding="5">
+ *
+ * <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr>
+ *
+ * <tr><td>class</td><td>String</td><td>ModelMBeanOperationInfo</td>
+ *     <td>Class where method is defined (fully qualified).</td></tr>
+ *
+ * <tr><td>currencyTimeLimit</td><td>Number</td>
+ *     <td>ModelMBeanInfo<br>ModelMBeanAttributeInfo<br>ModelMBeanOperationInfo</td>
+ *     <td>How long cached value is valid: &lt;0 never, =0 always,
+ *         &gt;0 seconds.</td></tr>
+ *
+ * <tr><td>default</td><td>Object</td><td>ModelMBeanAttributeInfo</td>
+ *     <td>Default value for attribute.</td></tr>
+ *
+ * <tr><td>descriptorType</td><td>String</td><td>Any</td>
+ *     <td>Type of descriptor, "mbean", "attribute", "constructor", "operation",
+ *         or "notification".</td></tr>
+ *
+ * <tr id="displayName"><td>displayName</td><td>String</td><td>Any</td>
+ *     <td>Human readable name of this item.</td></tr>
+ *
+ * <tr><td>export</td><td>String</td><td>ModelMBeanInfo</td>
+ *     <td>Name to be used to export/expose this MBean so that it is
+ *         findable by other JMX Agents.</td></tr>
+ *
+ * <tr><td>getMethod</td><td>String</td><td>ModelMBeanAttributeInfo</td>
+ *     <td>Name of operation descriptor for get method.</td></tr>
+ *
+ * <tr><td>lastUpdatedTimeStamp</td><td>Number</td>
+ *     <td>ModelMBeanAttributeInfo<br>ModelMBeanOperationInfo</td>
+ *     <td>When <a href="#value-field">value</a> was set.</td></tr>
+ *
+ * <tr><td>log</td><td>String</td><td>ModelMBeanInfo<br>ModelMBeanNotificationInfo</td>
+ *     <td>t or T: log all notifications, f or F: log no notifications.</td></tr>
+ *
+ * <tr><td>logFile</td><td>String</td><td>ModelMBeanInfo<br>ModelMBeanNotificationInfo</td>
+ *     <td>Fully qualified filename to log events to.</td></tr>
+ *
+ * <tr><td>messageID</td><td>String</td><td>ModelMBeanNotificationInfo</td>
+ *     <td>Unique key for message text (to allow translation, analysis).</td></tr>
+ *
+ * <tr><td>messageText</td><td>String</td><td>ModelMBeanNotificationInfo</td>
+ *     <td>Text of notification.</td></tr>
+ *
+ * <tr><td>name</td><td>String</td><td>Any</td>
+ *     <td>Name of this item.</td></tr>
+ *
+ * <tr><td>persistFile</td><td>String</td><td>ModelMBeanInfo</td>
+ *     <td>File name into which the MBean should be persisted.</td></tr>
+ *
+ * <tr><td>persistLocation</td><td>String</td><td>ModelMBeanInfo</td>
+ *     <td>The fully qualified directory name where the MBean should be
+ *         persisted (if appropriate).</td></tr>
+ *
+ * <tr><td>persistPeriod</td><td>Number</td>
+ *     <td>ModelMBeanInfo<br>ModelMBeanAttributeInfo</td>
+ *     <td>Frequency of persist cycle in seconds. Used when persistPolicy is
+ *         "OnTimer" or "NoMoreOftenThan".</td></tr>
+ *
+ * <tr><td>persistPolicy</td><td>String</td>
+ *     <td>ModelMBeanInfo<br>ModelMBeanAttributeInfo</td>
+ *     <td>One of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never.
+ *         See the section "MBean Descriptor Fields" in the JMX specification
+ *         document.</td></tr>
+ *
+ * <tr><td>presentationString</td><td>String</td><td>Any</td>
+ *     <td>XML formatted string to allow presentation of data.</td></tr>
+ *
+ * <tr><td>protocolMap</td><td>Descriptor</td><td>ModelMBeanAttributeInfo</td>
+ *     <td>See the section "Protocol Map Support" in the JMX specification
+ *         document.  Mappings must be appropriate for the attribute and entries
+ *         can be updated or augmented at runtime.</td></tr>
+ *
+ * <tr><td>role</td><td>String</td>
+ *     <td>ModelMBeanConstructorInfo<br>ModelMBeanOperationInfo</td>
+ *     <td>One of "constructor", "operation", "getter", or "setter".</td></tr>
+ *
+ * <tr><td>setMethod</td><td>String</td><td>ModelMBeanAttributeInfo</td>
+ *     <td>Name of operation descriptor for set method.</td></tr>
+ *
+ * <tr id="severity"><td>severity</td><td>Number</td>
+ *     <td>ModelMBeanNotificationInfo</td>
+ *     <td>0-6 where 0: unknown; 1: non-recoverable;
+ *         2: critical, failure; 3: major, severe;
+ *         4: minor, marginal, error; 5: warning;
+ *         6: normal, cleared, informative</td></tr>
+ *
+ * <tr><td>targetObject</td><td>Object</td><td>ModelMBeanOperationInfo</td>
+ *     <td>Object on which to execute this method.</td></tr>
+ *
+ * <tr><td>targetType</td><td>String</td><td>ModelMBeanOperationInfo</td>
+ *     <td>type of object reference for targetObject. Can be:
+ *         ObjectReference | Handle | EJBHandle | IOR | RMIReference.</td></tr>
+ *
+ * <tr id="value-field"><td>value</td><td>Object</td>
+ *     <td>ModelMBeanAttributeInfo<br>ModelMBeanOperationInfo</td>
+ *     <td>Current (cached) value for attribute or operation.</td></tr>
+ *
+ * <tr id="visibility"><td>visibility</td><td>Number</td><td>Any</td>
+ *     <td>1-4 where 1: always visible, 4: rarely visible.</td></tr>
+ *
+ * </table>
  *
  * @since 1.5
  */
@@ -439,7 +630,7 @@
     public boolean isValid() throws RuntimeOperationsException;
 
     /**
-     * Compares this descriptor to the given object.  The objects are equal if
+     * <p>Compares this descriptor to the given object.  The objects are equal if
      * the given object is also a Descriptor, and if the two Descriptors have
      * the same field names (possibly differing in case) and the same
      * associated values.  The respective values for a field in the two
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/javax/management/GenericMBeanException.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,276 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.management;
+
+import javax.management.openmbean.CompositeData;
+
+/**
+ * <p>A customizable exception that has an optional error code string and
+ * payload.  By using this exception in an MBean, you can avoid requiring
+ * clients of the MBean to have custom exception classes.</p>
+ *
+ * <p>An instance of this class has an optional {@linkplain #getErrorCode()
+ * error code}, and an optional {@linkplain #getUserData() payload} known as
+ * {@code userData}.  This allows you to distinguish between different
+ * sorts of exception while still using this class for all of them.</p>
+ *
+ * <p>To produce a suitable {@code userData}, it is often simplest to use
+ * the MXBean framework.  For example, suppose you want to convey a severity
+ * and a subsystem with your exception, which are respectively an int and a
+ * String.  You could define a class like this:</p>
+ *
+ * <pre>
+ * public class ExceptionDetails {
+ *     private final int severity;
+ *     private final String subsystem;
+ *
+ *     {@link java.beans.ConstructorProperties &#64;ConstructorProperties}(<!--
+ * -->{"severity", "subsystem"})
+ *     public ExceptionDetails(int severity, String subsystem) {
+ *         this.severity = severity;
+ *         this.subsystem = subsystem;
+ *     }
+ *
+ *     public int getSeverity() {
+ *         return severity;
+ *     }
+ *
+ *     public String getSubsystem() {
+ *         return subsystem;
+ *     }
+ * }
+ * </pre>
+ *
+ * <p>Then you can get the MXBean framework to transform {@code ExceptionDetails}
+ * into {@link CompositeData} like this:</p>
+ *
+ * <pre>
+ * static final <!--
+ * -->{@link javax.management.openmbean.MXBeanMapping MXBeanMapping} <!--
+ * -->exceptionDetailsMapping = <!--
+ * -->{@link javax.management.openmbean.MXBeanMappingFactory#DEFAULT
+ *     MXBeanMappingFactory.DEFAULT}.mappingForType(
+ *         ExceptionDetails.class, MXBeanMappingFactory.DEFAULT);
+ *
+ * public static GenericMBeanException newGenericMBeanException(
+ *         String message, String errorCode, int severity, String subsystem) {
+ *     ExceptionDetails details = new ExceptionDetails(severity, subsystem);
+ *     CompositeData userData = (CompositeData)
+ *             exceptionDetailsMapping.toOpenValue(details);
+ *     return new GenericMBeanException(
+ *             message, errorCode, userData, (Throwable) null);
+ * }
+ *
+ * ...
+ *     throw newGenericMBeanException(message, errorCode, 25, "foosystem");
+ * </pre>
+ *
+ * <p>A client that knows the {@code ExceptionDetails} class can convert
+ * back from the {@code userData} of a {@code GenericMBeanException}
+ * that was generated as above:</p>
+ *
+ * <pre>
+ * ...
+ *     try {
+ *         mbeanProxy.foo();
+ *     } catch (GenericMBeanException e) {
+ *         CompositeData userData = e.getUserData();
+ *         ExceptionDetails details = (ExceptionDetails)
+ *                 exceptionDetailsMapping.fromOpenValue(userData);
+ *         System.out.println("Exception Severity: " + details.getSeverity());
+ *     }
+ * ...
+ * </pre>
+ *
+ * <p>The Descriptor field <a href="Descriptor.html#exceptionErrorCodes"><!--
+ * -->exceptionErrorCodes</a> can be used to specify in the
+ * {@link MBeanOperationInfo} for an operation what the possible
+ * {@linkplain #getErrorCode() error codes} are when that operation throws
+ * {@code GenericMBeanException}.  It can also be used in an {@link
+ * MBeanConstructorInfo} or {@link MBeanAttributeInfo} to specify what the
+ * possible error codes are for {@code GenericMBeanException} when invoking
+ * that constructor or getting that attribute, respectively.  The field
+ * <a href="Descriptor.html#setExceptionErrorCodes"><!--
+ * -->setExceptionErrorCodes</a> can be used to specify what the possible
+ * error codes are when setting an attribute.</p>
+ *
+ * <p>You may want to use the {@link DescriptorKey &#64;DescriptorKey} facility
+ * to define annotations that allow you to specify the error codes.  If you
+ * define...</p>
+ *
+ * <pre>
+ * {@link java.lang.annotation.Documented &#64;Documented}
+ * {@link java.lang.annotation.Target &#64;Target}(ElementType.METHOD)
+ * {@link java.lang.annotation.Retention &#64;Retention}(RetentionPolicy.RUNTIME)
+ * public &#64;interface ErrorCodes {
+ *     &#64;DescriptorKey("exceptionErrorCodes")
+ *     String[] value();
+ * }
+ * </pre>
+ *
+ * <p>...then you can write MBean interfaces like this...</p>
+ *
+ * <pre>
+ * public interface FooMBean {  // or FooMXBean
+ *     &#64;ErrorCodes({"com.example.bad", "com.example.worse"})
+ *     public void foo() throws GenericMBeanException;
+ * }
+ * </pre>
+ *
+ * <p>The Descriptor field <a href="Descriptor.html#exceptionUserDataTypes"><!--
+ * -->exceptionUserDataTypes</a> can be used to specify in the
+ * {@link MBeanOperationInfo} for an operation what the possible types of
+ * {@linkplain #getUserData() userData} are when that operation throws
+ * {@code GenericMBeanException}.  It is an array of
+ * {@link javax.management.openmbean.CompositeType CompositeType} values
+ * describing the possible {@link CompositeData} formats.  This field can also be used
+ * in an {@link MBeanConstructorInfo} or {@link MBeanAttributeInfo} to specify
+ * the possible types of user data for {@code GenericMBeanException} when
+ * invoking that constructor or getting that attribute, respectively.  The
+ * field
+ * <a href="Descriptor.html#setExceptionUserDataTypes">setExceptionUserDataTypes</a>
+ * can be used to specify the possible types of user data for exceptions when
+ * setting an attribute.  If a Descriptor has both {@code exceptionErrorCodes}
+ * and {@code exceptionUserDataTypes} then the two arrays should be the
+ * same size; each pair of corresponding elements describes one kind
+ * of exception.  Similarly for {@code setExceptionErrorCodes} and {@code
+ * setExceptionUserDataTypes}.
+ *
+ *
+ * <h4>Serialization</h4>
+ *
+ * <p>For compatibility reasons, instances of this class are serialized as
+ * instances of {@link MBeanException}.  Special logic in that class converts
+ * them back to instances of this class at deserialization time.  If the
+ * serialized object is deserialized in an earlier version of the JMX API
+ * that does not include this class, then it will appear as just an {@code
+ * MBeanException} and the error code or userData will not be available.</p>
+ *
+ * @since 1.7
+ */
+public class GenericMBeanException extends MBeanException {
+    private static final long serialVersionUID = -1560202003985932823L;
+
+    /**
+     * <p>Constructs a new {@code GenericMBeanException} with the given
+     * detail message.  This constructor is
+     * equivalent to {@link #GenericMBeanException(String, String,
+     * CompositeData, Throwable) GenericMBeanException(message, "",
+     * null, null)}.</p>
+     *
+     * @param message the exception detail message.
+     */
+    public GenericMBeanException(String message) {
+        this(message, "", null, null);
+    }
+
+    /**
+     * <p>Constructs a new {@code GenericMBeanException} with the given
+     * detail message and cause.  This constructor is
+     * equivalent to {@link #GenericMBeanException(String, String,
+     * CompositeData, Throwable) GenericMBeanException(message, "",
+     * null, cause)}.</p>
+     *
+     * @param message the exception detail message.
+     * @param cause the cause of this exception.  Can be null.
+     */
+    public GenericMBeanException(String message, Throwable cause) {
+        this(message, "", null, cause);
+    }
+
+    /**
+     * <p>Constructs a new {@code GenericMBeanException} with the given
+     * detail message, error code, and user data.  This constructor is
+     * equivalent to {@link #GenericMBeanException(String, String,
+     * CompositeData, Throwable) GenericMBeanException(message, errorCode,
+     * userData, null)}.</p>
+     *
+     * @param message the exception detail message.
+     * @param errorCode the exception error code.  Specifying a null value
+     * is equivalent to specifying an empty string.  It is recommended to use
+     * the same reverse domain name convention as package names, for example
+     * "com.example.foo.UnexpectedFailure".  There is no requirement that the
+     * error code be a syntactically valid Java identifier.
+     * @param userData extra information about the exception.  Can be null.
+     */
+    public GenericMBeanException(
+            String message, String errorCode, CompositeData userData) {
+        this(message, errorCode, userData, null);
+    }
+
+    /**
+     * <p>Constructs a new {@code GenericMBeanException} with the given
+     * detail message, error code, user data, and cause.</p>
+     *
+     * @param message the exception detail message.
+     * @param errorCode the exception error code.  Specifying a null value
+     * is equivalent to specifying an empty string.  It is recommended to use
+     * the same reverse domain name convention as package names, for example
+     * "com.example.foo.UnexpectedFailure".  There is no requirement that the
+     * error code be a syntactically valid Java identifier.
+     * @param userData extra information about the exception.  Can be null.
+     * @param cause the cause of this exception.  Can be null.
+     */
+    public GenericMBeanException(
+            String message, String errorCode, CompositeData userData,
+            Throwable cause) {
+        super(message, (errorCode == null) ? "" : errorCode, userData, cause);
+    }
+
+    /**
+     * <p>Returns the error code of this exception.</p>
+     *
+     * @return the error code.  This value is never null.
+     */
+    public String getErrorCode() {
+        return errorCode;
+    }
+
+    /**
+     * <p>Returns the userData of this exception.</p>
+     *
+     * @return the userData.  Can be null.
+     */
+    public CompositeData getUserData() {
+        return userData;
+    }
+
+    /**
+     * <p>Instances of this class are serialized as instances of
+     * {@link MBeanException}.  {@code MBeanException} has private fields that can
+     * not be set by its public constructors.  They can only be set in objects
+     * returned by this method.  When an {@code MBeanException} instance is
+     * deserialized, if those fields are present then its {@code readResolve}
+     * method will substitute a {@code GenericMBeanException} equivalent to
+     * this one.</p>
+     */
+    Object writeReplace() {
+        MBeanException x = new MBeanException(
+                getMessage(), errorCode, userData, getCause());
+        x.setStackTrace(this.getStackTrace());
+        return x;
+    }
+}
--- a/src/share/classes/javax/management/JMRuntimeException.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/JMRuntimeException.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -70,7 +70,7 @@
         try {
             java.lang.reflect.Method initCause =
                 Throwable.class.getMethod("initCause",
-                                          new Class[] {Throwable.class});
+                                          new Class<?>[] {Throwable.class});
             initCause.invoke(this, new Object[] {cause});
         } catch (Exception e) {
             // OK: just means we won't have debugging info
--- a/src/share/classes/javax/management/JMX.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/JMX.java	Thu Jan 29 18:33:52 2009 -0800
@@ -30,6 +30,7 @@
 import com.sun.jmx.remote.util.ClassLogger;
 import java.beans.BeanInfo;
 import java.beans.PropertyDescriptor;
+import java.io.IOException;
 import java.io.Serializable;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
@@ -37,6 +38,7 @@
 import java.lang.reflect.Proxy;
 import java.util.Map;
 import java.util.TreeMap;
+import javax.management.namespace.JMXNamespaces;
 import javax.management.openmbean.MXBeanMappingFactory;
 
 /**
@@ -49,8 +51,6 @@
      * this class.
      */
     static final JMX proof = new JMX();
-    private static final ClassLogger logger =
-        new ClassLogger("javax.management.misc", "JMX");
 
     private JMX() {}
 
@@ -60,6 +60,27 @@
      */
     public static final String DEFAULT_VALUE_FIELD = "defaultValue";
 
+   /**
+     * The name of the <a
+     * href="Descriptor.html#descriptionResourceBundleBaseName">{@code
+     * descriptionResourceBundleBaseName}</a> field.
+     */
+    public static final String DESCRIPTION_RESOURCE_BUNDLE_BASE_NAME_FIELD =
+            "descriptionResourceBundleBaseName";
+
+    /**
+     * The name of the <a href="Descriptor.html#descriptionResourceKey">{@code
+     * descriptionResourceKey}</a> field.
+     */
+    public static final String DESCRIPTION_RESOURCE_KEY_FIELD =
+            "descriptionResourceKey";
+
+    /**
+     * The name of the <a href="Descriptor.html#exceptions">{@code
+     * exceptions}</a> field.
+     */
+    public static final String EXCEPTIONS_FIELD = "exceptions";
+
     /**
      * The name of the <a href="Descriptor.html#immutableInfo">{@code
      * immutableInfo}</a> field.
@@ -79,6 +100,12 @@
     public static final String LEGAL_VALUES_FIELD = "legalValues";
 
     /**
+     * The name of the <a href="Descriptor.html#locale">{@code locale}</a>
+     * field.
+     */
+    public static final String LOCALE_FIELD = "locale";
+
+    /**
      * The name of the <a href="Descriptor.html#maxValue">{@code
      * maxValue}</a> field.
      */
@@ -117,16 +144,27 @@
     public static final String ORIGINAL_TYPE_FIELD = "originalType";
 
     /**
+     * The name of the <a href="Descriptor.html#setExceptions">{@code
+     * setExceptions}</a> field.
+     */
+    public static final String SET_EXCEPTIONS_FIELD = "setExceptions";
+
+    /**
+     * The name of the <a href="Descriptor.html#objectNameTemplate">{@code
+     * objectNameTemplate}</a> field.
+     */
+    public static final String OBJECT_NAME_TEMPLATE = "objectNameTemplate";
+
+    /**
      * <p>Options to apply to an MBean proxy or to an instance of {@link
      * StandardMBean}.</p>
      *
-     * <p>For example, to specify a custom {@link MXBeanMappingFactory}
-     * for a {@code StandardMBean}, you might write this:</p>
+     * <p>For example, to specify the "wrapped object visible" option for a
+     * {@code StandardMBean}, you might write this:</p>
      *
      * <pre>
-     * MXBeanMappingFactory factory = new MyMXBeanMappingFactory();
-     * JMX.MBeanOptions opts = new JMX.MBeanOptions();
-     * opts.setMXBeanMappingFactory(factory);
+     * StandardMBean.Options opts = new StandardMBean.Options();
+     * opts.setWrappedObjectVisible(true);
      * StandardMBean mbean = new StandardMBean(impl, intf, opts);
      * </pre>
      *
@@ -463,6 +501,12 @@
      * likewise for the other methods of {@link
      * NotificationBroadcaster} and {@link NotificationEmitter}.</p>
      *
+     * <p>This method is equivalent to {@link
+     * #newMBeanProxy(MBeanServerConnection, ObjectName, Class, JMX.MBeanOptions)
+     * newMBeanProxy(connection, objectName, interfaceClass, opts)}, where
+     * {@code opts} is a {@link JMX.ProxyOptions} representing the
+     * {@code notificationEmitter} parameter.</p>
+     *
      * @param connection the MBean server to forward to.
      * @param objectName the name of the MBean within
      * {@code connection} to forward to.
@@ -555,10 +599,6 @@
      *
      * </ul>
      *
-     * <p>The object returned by this method is a
-     * {@link Proxy} whose {@code InvocationHandler} is an
-     * {@link MBeanServerInvocationHandler}.</p>
-     *
      * <p>This method is equivalent to {@link
      * #newMXBeanProxy(MBeanServerConnection, ObjectName, Class,
      * boolean) newMXBeanProxy(connection, objectName, interfaceClass,
@@ -601,6 +641,17 @@
      * likewise for the other methods of {@link
      * NotificationBroadcaster} and {@link NotificationEmitter}.</p>
      *
+     * <p>This method is equivalent to {@link
+     * #newMBeanProxy(MBeanServerConnection, ObjectName, Class, JMX.MBeanOptions)
+     * newMBeanProxy(connection, objectName, interfaceClass, opts)}, where
+     * {@code opts} is a {@link JMX.ProxyOptions} where the {@link
+     * JMX.ProxyOptions#getMXBeanMappingFactory() MXBeanMappingFactory}
+     * property is
+     * {@link MXBeanMappingFactory#forInterface(Class)
+     * MXBeanMappingFactory.forInterface(interfaceClass)} and the {@link
+     * JMX.ProxyOptions#isNotificationEmitter() notificationEmitter} property
+     * is equal to the {@code notificationEmitter} parameter.</p>
+     *
      * @param connection the MBean server to forward to.
      * @param objectName the name of the MBean within
      * {@code connection} to forward to.
@@ -655,6 +706,36 @@
      *     arbitrary Java types and Open Types.</li>
      * </ul>
      *
+     * <p>The object returned by this method is a
+     * {@link Proxy} whose {@code InvocationHandler} is an
+     * {@link MBeanServerInvocationHandler}.  This means that it is possible
+     * to retrieve the parameters that were used to produce the proxy.  If the
+     * proxy was produced as follows...</p>
+     *
+     * <pre>
+     * FooMBean proxy =
+     *     JMX.newMBeanProxy(connection, objectName, FooMBean.class, opts);
+     * </pre>
+     *
+     * <p>...then you can get the {@code MBeanServerInvocationHandler} like
+     * this...</p>
+     *
+     * <pre>
+     * MBeanServerInvocationHandler mbsih = (MBeanServerInvocationHandler)
+     *     {@link Proxy#getInvocationHandler(Object)
+     *            Proxy.getInvocationHandler}(proxy);
+     * </pre>
+     *
+     * <p>...and you can retrieve {@code connection}, {@code
+     * objectName}, and {@code opts} using the {@link
+     * MBeanServerInvocationHandler#getMBeanServerConnection()
+     * getMBeanServerConnection()}, {@link
+     * MBeanServerInvocationHandler#getObjectName() getObjectName()}, and
+     * {@link MBeanServerInvocationHandler#getMBeanOptions() getMBeanOptions()}
+     * methods on {@code mbsih}.  You can retrieve {@code FooMBean.class}
+     * using {@code proxy.getClass().}{@link
+     * Class#getInterfaces() getInterfaces()}.</p>
+     *
      * @param connection the MBean server to forward to.
      * @param objectName the name of the MBean within
      * {@code connection} to forward to.
@@ -703,12 +784,12 @@
 
         InvocationHandler handler = new MBeanServerInvocationHandler(
                 connection, objectName, opts);
-        final Class[] interfaces;
+        final Class<?>[] interfaces;
         if (notificationEmitter) {
             interfaces =
                 new Class<?>[] {interfaceClass, NotificationEmitter.class};
         } else
-            interfaces = new Class[] {interfaceClass};
+            interfaces = new Class<?>[] {interfaceClass};
         Object proxy = Proxy.newProxyInstance(
                 interfaceClass.getClassLoader(),
                 interfaces,
@@ -759,10 +840,91 @@
      */
     public static boolean isNotificationSource(Object mbean)
             throws NotCompliantMBeanException {
-        if (mbean instanceof NotificationBroadcaster)
-            return true;
-        Object resource = (mbean instanceof DynamicWrapperMBean) ?
-            ((DynamicWrapperMBean) mbean).getWrappedObject() : mbean;
-        return (MBeanInjector.injectsSendNotification(resource));
+        for (int i = 0; i < 2; i++) {
+            if (mbean instanceof NotificationBroadcaster ||
+                    MBeanInjector.injectsSendNotification(mbean))
+                return true;
+            if (mbean instanceof DynamicWrapperMBean)
+                mbean = ((DynamicWrapperMBean) mbean).getWrappedObject();
+            else
+                break;
+        }
+        return false;
+    }
+
+    /**
+     * <p>Return the version of the JMX specification that a (possibly remote)
+     * MBean Server is using.  The JMX specification described in this
+     * documentation is version 2.0.  The earlier versions that might be
+     * reported by this method are 1.0, 1.1, 1.2, and 1.4.  (There is no 1.3.)
+     * All of these versions and all future versions can be compared using
+     * {@link String#compareTo(String)}.  So, for example, to tell if
+     * {@code mbsc} is running at least version 2.0 you can write:</p>
+     *
+     * <pre>
+     * String version = JMX.getSpecificationVersion(mbsc, null);
+     * boolean atLeast2dot0 = (version.compareTo("2.0") >= 0);
+     * </pre>
+     *
+     * <p>A remote MBean Server might be running an earlier version of the
+     * JMX API, and in that case <a href="package-summary.html#interop">certain
+     * features</a> might not be available in it.</p>
+     *
+     * <p>The version of the MBean Server {@code mbsc} is not necessarily
+     * the version of all namespaces within that MBean Server, for example
+     * if some of them use {@link javax.management.namespace.JMXRemoteNamespace
+     * JMXRemoteNamespace}.  To determine the version of the namespace
+     * that a particular MBean is in, give its name as the {@code mbeanName}
+     * parameter.</p>
+     *
+     * @param mbsc a connection to an MBean Server.
+     *
+     * @param mbeanName the name of an MBean within that MBean Server, or null.
+     * If non-null, the namespace of this name, as determined by
+     * {@link JMXNamespaces#getContainingNamespace
+     * JMXNamespaces.getContainingNamespace}, is the one whose specification
+     * version will be returned.
+     *
+     * @return the JMX specification version reported by that MBean Server.
+     *
+     * @throws IllegalArgumentException if {@code mbsc} is null, or if
+     * {@code mbeanName} includes a wildcard character ({@code *} or {@code ?})
+     * in its namespace.
+     *
+     * @throws IOException if the version cannot be obtained, either because
+     * there is a communication problem or because the remote MBean Server
+     * does not have the appropriate {@linkplain
+     * MBeanServerDelegateMBean#getSpecificationVersion() attribute}.
+     *
+     * @see <a href="package-summary.html#interop">Interoperability between
+     * versions of the JMX specification</a>
+     * @see MBeanServerDelegateMBean#getSpecificationVersion
+     */
+    public static String getSpecificationVersion(
+            MBeanServerConnection mbsc, ObjectName mbeanName)
+            throws IOException {
+        if (mbsc == null)
+            throw new IllegalArgumentException("Null MBeanServerConnection");
+
+        String namespace;
+        if (mbeanName == null)
+            namespace = "";
+        else
+            namespace = JMXNamespaces.getContainingNamespace(mbeanName);
+        if (namespace.contains("*") || namespace.contains("?")) {
+            throw new IllegalArgumentException(
+                    "ObjectName contains namespace wildcard: " + mbeanName);
+        }
+
+        try {
+            if (namespace.length() > 0)
+                mbsc = JMXNamespaces.narrowToNamespace(mbsc, namespace);
+            return (String) mbsc.getAttribute(
+                    MBeanServerDelegate.DELEGATE_NAME, "SpecificationVersion");
+        } catch (IOException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new IOException(e);
+        }
     }
 }
--- a/src/share/classes/javax/management/MBeanAttributeInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanAttributeInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -186,8 +186,10 @@
              (getter != null),
              (setter != null),
              isIs(getter),
-             ImmutableDescriptor.union(Introspector.descriptorForElement(getter),
-                                   Introspector.descriptorForElement(setter)));
+             ImmutableDescriptor.union(Introspector.
+             descriptorForElement(getter, false),
+                                   Introspector.descriptorForElement(setter,
+                                   true)));
     }
 
     /**
@@ -316,7 +318,7 @@
      */
     private static String attributeType(Method getter, Method setter)
             throws IntrospectionException {
-        Class type = null;
+        Class<?> type = null;
 
         if (getter != null) {
             if (getter.getParameterTypes().length != 0) {
@@ -330,7 +332,7 @@
         }
 
         if (setter != null) {
-            Class params[] = setter.getParameterTypes();
+            Class<?> params[] = setter.getParameterTypes();
             if (params.length != 1) {
                 throw new IntrospectionException("bad setter arg count");
             }
--- a/src/share/classes/javax/management/MBeanConstructorInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanConstructorInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -64,10 +64,10 @@
      * @param constructor The <CODE>java.lang.reflect.Constructor</CODE>
      * object describing the MBean constructor.
      */
-    public MBeanConstructorInfo(String description, Constructor constructor) {
+    public MBeanConstructorInfo(String description, Constructor<?> constructor) {
         this(constructor.getName(), description,
              constructorSignature(constructor),
-             Introspector.descriptorForElement(constructor));
+             Introspector.descriptorForElement(constructor, false));
     }
 
     /**
@@ -210,8 +210,8 @@
         return hash;
     }
 
-    private static MBeanParameterInfo[] constructorSignature(Constructor cn) {
-        final Class[] classes = cn.getParameterTypes();
+    private static MBeanParameterInfo[] constructorSignature(Constructor<?> cn) {
+        final Class<?>[] classes = cn.getParameterTypes();
         final Annotation[][] annots = cn.getParameterAnnotations();
         return MBeanOperationInfo.parameters(classes, annots);
     }
--- a/src/share/classes/javax/management/MBeanException.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanException.java	Thu Jan 29 18:33:52 2009 -0800
@@ -25,6 +25,8 @@
 
 package javax.management;
 
+import javax.management.openmbean.CompositeData;
+
 
 /**
  * Represents "user defined" exceptions thrown by MBean methods
@@ -41,6 +43,26 @@
     private static final long serialVersionUID = 4066342430588744142L;
 
     /**
+     * @serial This field is null for instances of this class that were
+     * produced by its public constructors.  It is non-null for instances
+     * of this class that represent serialized instances of {@link
+     * GenericMBeanException}.
+     *
+     * @see GenericMBeanException#getErrorCode()
+     */
+    final String errorCode;
+
+    /**
+     * @serial This field is null for instances of this class that were
+     * produced by its public constructors.  It may be non-null for instances
+     * of this class that represent serialized instances of {@link
+     * GenericMBeanException}.
+     *
+     * @see GenericMBeanException#getUserData()
+     */
+    final CompositeData userData;
+
+    /**
      * @serial Encapsulated {@link Exception}
      */
     private java.lang.Exception exception ;
@@ -51,9 +73,8 @@
      *
      * @param e the wrapped exception.
      */
-    public MBeanException(java.lang.Exception e) {
-        super() ;
-        exception = e ;
+    public MBeanException(Exception e) {
+        this(null, null, null, e);
     }
 
     /**
@@ -63,11 +84,19 @@
      * @param e the wrapped exception.
      * @param message the detail message.
      */
-    public MBeanException(java.lang.Exception e, String message) {
-        super(message) ;
-        exception = e ;
+    public MBeanException(Exception e, String message) {
+        this(message, null, null, e);
     }
 
+    MBeanException(
+            String message, String errorCode, CompositeData userData, Throwable cause) {
+        super(message);
+        initCause(cause);
+        if (cause instanceof Exception)
+            this.exception = (Exception) cause;
+        this.errorCode = errorCode;
+        this.userData = userData;
+    }
 
     /**
      * Return the actual {@link Exception} thrown.
@@ -79,11 +108,24 @@
     }
 
     /**
-     * Return the actual {@link Exception} thrown.
-     *
-     * @return the wrapped exception.
+     * This method is invoked when deserializing instances of this class.
+     * If the {@code errorCode} field of the deserialized instance is not
+     * null, this method returns an instance of {@link GenericMBeanException}
+     * instead.  Otherwise it returns {@code this}.
+     * @return {@code this}, or a {@code GenericMBeanException}.
      */
-    public Throwable getCause() {
-        return exception;
+    Object readResolve() {
+        if (errorCode == null) {
+            // serial compatibility: earlier versions did not set
+            // Throwable.cause because they overrode getCause().
+            if (getCause() == null && exception != null)
+                initCause(exception);
+            return this;
+        } else {
+            Throwable t = new GenericMBeanException(
+                    getMessage(), errorCode, userData, getCause());
+            t.setStackTrace(this.getStackTrace());
+            return t;
+        }
     }
 }
--- a/src/share/classes/javax/management/MBeanInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -25,6 +25,7 @@
 
 package javax.management;
 
+import com.sun.jmx.mbeanserver.Util;
 import java.io.IOException;
 import java.io.StreamCorruptedException;
 import java.io.Serializable;
@@ -37,6 +38,12 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import static javax.management.ImmutableDescriptor.nonNullDescriptor;
 
 /**
@@ -45,6 +52,17 @@
  * management operations.  Instances of this class are immutable.
  * Subclasses may be mutable but this is not recommended.</p>
  *
+ * <p id="info-changed">Usually the {@code MBeanInfo} for any given MBean does
+ * not change over the lifetime of that MBean.  Dynamic MBeans can change their
+ * {@code MBeanInfo} and in that case it is recommended that they emit a {@link
+ * Notification} with a {@linkplain Notification#getType() type} of {@code
+ * "jmx.mbean.info.changed"} and a {@linkplain Notification#getUserData()
+ * userData} that is the new {@code MBeanInfo}.  This is not required, but
+ * provides a conventional way for clients of the MBean to discover the change.
+ * See also the <a href="Descriptor.html#immutableInfo">immutableInfo</a> and
+ * <a href="Descriptor.html#infoTimeout">infoTimeout</a> fields in the {@code
+ * MBeanInfo} {@link Descriptor}.</p>
+ *
  * <p>The contents of the <code>MBeanInfo</code> for a Dynamic MBean
  * are determined by its {@link DynamicMBean#getMBeanInfo
  * getMBeanInfo()} method.  This includes Open MBeans and Model
@@ -62,27 +80,49 @@
  * constructors in that object;
  *
  * <li>{@link #getAttributes()} returns the list of all attributes
- * whose existence is deduced from the presence in the MBean interface
- * of a <code>get<i>Name</i></code>, <code>is<i>Name</i></code>, or
- * <code>set<i>Name</i></code> method that conforms to the conventions
+ * whose existence is deduced as follows:
+ * <ul>
+ * <li>if the Standard MBean is defined with an MBean interface,
+ * from <code>get<i>Name</i></code>, <code>is<i>Name</i></code>, or
+ * <code>set<i>Name</i></code> methods that conform to the conventions
  * for Standard MBeans;
+ * <li>if the Standard MBean is defined with the {@link MBean &#64;MBean} or
+ * {@link MXBean &#64;MXBean} annotation on a class, from methods with the
+ * {@link ManagedAttribute &#64;ManagedAttribute} annotation;
+ * </ul>
  *
- * <li>{@link #getOperations()} returns the list of all methods in
+ * <li>{@link #getOperations()} returns the list of all operations whose
+ * existence is deduced as follows:
+ * <ul>
+ * <li>if the Standard MBean is defined with an MBean interface, from methods in
  * the MBean interface that do not represent attributes;
+ * <li>if the Standard MBean is defined with the {@link MBean &#64;MBean} or
+ * {@link MXBean &#64;MXBean} annotation on a class, from methods with the
+ * {@link ManagedOperation &#64;ManagedOperation} annotation;
+ * </ul>
  *
- * <li>{@link #getNotifications()} returns an empty array if the MBean
- * does not implement the {@link NotificationBroadcaster} interface,
- * otherwise the result of calling {@link
+ * <li>{@link #getNotifications()} returns:
+ * <ul>
+ * <li>if the MBean implements the {@link NotificationBroadcaster} interface,
+ * the result of calling {@link
  * NotificationBroadcaster#getNotificationInfo()} on it;
+ * <li>otherwise, if there is a {@link NotificationInfo &#64;NotificationInfo}
+ * or {@link NotificationInfos &#64;NotificationInfos} annotation on the
+ * MBean interface or <code>&#64;MBean</code> or <code>&#64;MXBean</code>
+ * class, the array implied by those annotations;
+ * <li>otherwise an empty array;
+ * </ul>
  *
  * <li>{@link #getDescriptor()} returns a descriptor containing the contents
- * of any descriptor annotations in the MBean interface.
+ * of any descriptor annotations in the MBean interface (see
+ * {@link DescriptorFields &#64;DescriptorFields} and
+ * {@link DescriptorKey &#64;DescriptorKey}).
  *
  * </ul>
  *
  * <p>The description returned by {@link #getDescription()} and the
  * descriptions of the contained attributes and operations are determined
- * by the corresponding <!-- link here --> Description annotations if any;
+ * by the corresponding {@link Description} annotations if any;
  * otherwise their contents are not specified.</p>
  *
  * <p>The remaining details of the <code>MBeanInfo</code> for a
@@ -257,6 +297,7 @@
      * <p>Since this class is immutable, the clone method is chiefly of
      * interest to subclasses.</p>
      */
+     @Override
      public Object clone () {
          try {
              return super.clone() ;
@@ -441,6 +482,7 @@
         return (Descriptor) nonNullDescriptor(descriptor).clone();
     }
 
+    @Override
     public String toString() {
         return
             getClass().getName() + "[" +
@@ -472,6 +514,7 @@
      * @return true if and only if <code>o</code> is an MBeanInfo that is equal
      * to this one according to the rules above.
      */
+    @Override
     public boolean equals(Object o) {
         if (o == this)
             return true;
@@ -491,6 +534,7 @@
              Arrays.equals(p.fastGetNotifications(), fastGetNotifications()));
     }
 
+    @Override
     public int hashCode() {
         /* Since computing the hashCode is quite expensive, we cache it.
            If by some terrible misfortune the computed value is 0, the
@@ -524,8 +568,8 @@
      * a WeakHashMap so that we don't prevent a class from being
      * garbage collected just because we know whether it's immutable.
      */
-    private static final Map<Class, Boolean> arrayGettersSafeMap =
-        new WeakHashMap<Class, Boolean>();
+    private static final Map<Class<?>, Boolean> arrayGettersSafeMap =
+        new WeakHashMap<Class<?>, Boolean>();
 
     /**
      * Return true if <code>subclass</code> is known to preserve the
@@ -537,7 +581,7 @@
      * This is obviously not an infallible test for immutability,
      * but it works for the public interfaces of the MBean*Info classes.
     */
-    static boolean arrayGettersSafe(Class subclass, Class immutableClass) {
+    static boolean arrayGettersSafe(Class<?> subclass, Class<?> immutableClass) {
         if (subclass == immutableClass)
             return true;
         synchronized (arrayGettersSafeMap) {
@@ -714,4 +758,377 @@
             throw new StreamCorruptedException("Got unexpected byte.");
         }
     }
+
+    /**
+     * <p>Return an {@code MBeanInfo} object that is the same as this one
+     * except that its descriptions are localized in the given locale.
+     * This means the text returned by {@link MBeanInfo#getDescription}
+     * (the description of the MBean itself), and the text returned by the
+     * {@link MBeanFeatureInfo#getDescription getDescription()} method
+     * for every {@linkplain MBeanAttributeInfo attribute}, {@linkplain
+     * MBeanOperationInfo operation}, {@linkplain MBeanConstructorInfo
+     * constructor}, and {@linkplain MBeanNotificationInfo notification}
+     * contained in the {@code MBeanInfo}.</p>
+     *
+     * <p>Here is how the description {@code this.getDescription()} is
+     * localized.</p>
+     *
+     * <p>First, if the {@linkplain #getDescriptor() descriptor}
+     * of this {@code MBeanInfo} contains a field <code><a
+     * href="Descriptor.html#locale">"locale"</a></code>, and the value of
+     * the field is the same as {@code locale.toString()}, then this {@code
+     * MBeanInfo} is returned. Otherwise, localization proceeds as follows,
+     * and the {@code "locale"} field in the returned {@code MBeanInfo} will
+     * be {@code locale.toString()}.
+     *
+     * <p>A <em>{@code className}</em> is determined. If this
+     * {@code MBeanInfo} contains a descriptor with the field
+     * <a href="Descriptor.html#interfaceClassName">{@code
+     * "interfaceClassName"}</a>, then the value of that field is the
+     * {@code className}. Otherwise, it is {@link #getClassName()}.
+     * Everything before the last period (.) in the {@code className} is
+     * the <em>{@code package}</em>, and everything after is the <em>{@code
+     * simpleClassName}</em>. (If there is no period, then the {@code package}
+     * is empty and the {@code simpleClassName} is the same as the {@code
+     * className}.)</p>
+     *
+     * <p>A <em>{@code resourceKey}</em> is determined. If this {@code
+     * MBeanInfo} contains a {@linkplain MBeanInfo#getDescriptor() descriptor}
+     * with a field {@link JMX#DESCRIPTION_RESOURCE_KEY_FIELD
+     * "descriptionResourceKey"}, the value of the field is
+     * the {@code resourceKey}. Otherwise, the {@code resourceKey} is {@code
+     * simpleClassName + ".mbean"}.</p>
+     *
+     * <p>A <em>{@code resourceBundleBaseName}</em> is determined. If
+     * this {@code MBeanInfo} contains a descriptor with a field {@link
+     * JMX#DESCRIPTION_RESOURCE_BUNDLE_BASE_NAME_FIELD
+     * "descriptionResourceBundleBaseName"}, the value of the field
+     * is the {@code resourceBundleBaseName}. Otherwise, the {@code
+     * resourceBundleBaseName} is {@code package + ".MBeanDescriptions"}.
+     *
+     * <p>Then, a {@link java.util.ResourceBundle ResourceBundle} is
+     * determined, using<br> {@link java.util.ResourceBundle#getBundle(String,
+     * Locale, ClassLoader) ResourceBundle.getBundle(resourceBundleBaseName,
+     * locale, loader)}. If this succeeds, and if {@link
+     * java.util.ResourceBundle#getString(String) getString(resourceKey)}
+     * returns a string, then that string is the localized description.
+     * Otherwise, the original description is unchanged.</p>
+     *
+     * <p>A localized description for an {@code MBeanAttributeInfo} is
+     * obtained similarly. The default {@code resourceBundleBaseName}
+     * is the same as above. The default description and the
+     * descriptor fields {@code "descriptionResourceKey"} and {@code
+     * "descriptionResourceBundleBaseName"} come from the {@code
+     * MBeanAttributeInfo} rather than the {@code MBeanInfo}. If the
+     * attribute's {@linkplain MBeanFeatureInfo#getName() name} is {@code
+     * Foo} then its default {@code resourceKey} is {@code simpleClassName +
+     * ".attribute.Foo"}.</p>
+     *
+     * <p>Similar rules apply for operations, constructors, and notifications.
+     * If the name of the operation, constructor, or notification is {@code
+     * Foo} then the default {@code resourceKey} is respectively {@code
+     * simpleClassName + ".operation.Foo"}, {@code simpleClassName +
+     * ".constructor.Foo"}, or {@code simpleClassName + ".notification.Foo"}.
+     * If two operations or constructors have the same name (overloading) then
+     * they have the same default {@code resourceKey}; if different localized
+     * descriptions are needed then a non-default key must be supplied using
+     * {@code "descriptionResourceKey"}.</p>
+     *
+     * <p>Similar rules also apply for descriptions of parameters ({@link
+     * MBeanParameterInfo}). The default {@code resourceKey} for a parameter
+     * whose {@linkplain MBeanFeatureInfo#getName() name} is {@code
+     * Bar} in an operation or constructor called {@code Foo} is {@code
+     * simpleClassName + ".operation.Foo.Bar"} or {@code simpleClassName +
+     * ".constructor.Foo.Bar"} respectively.</p>
+     *
+     * <h4>Example</h4>
+     *
+     * <p>Suppose you have an MBean defined by these two Java source files:</p>
+     *
+     * <pre>
+     * // ConfigurationMBean.java
+     * package com.example;
+     * public interface ConfigurationMBean {
+     *     public String getName();
+     *     public void save(String fileName);
+     * }
+     *
+     * // Configuration.java
+     * package com.example;
+     * public class Configuration implements ConfigurationMBean {
+     *     public Configuration(String defaultName) {
+     *         ...
+     *     }
+     *     ...
+     * }
+     * </pre>
+     *
+     * <p>Then you could define the default descriptions for the MBean, by
+     * including a resource bundle called {@code com/example/MBeanDescriptions}
+     * with the compiled classes. Most often this is done by creating a file
+     * {@code MBeanDescriptions.properties} in the same directory as {@code
+     * ConfigurationMBean.java}. Make sure that this file is copied into the
+     * same place as the compiled classes; in typical build environments that
+     * will be true by default.</p>
+     *
+     * <p>The file {@code com/example/MBeanDescriptions.properties} might
+     * look like this:</p>
+     *
+     * <pre>
+     * # Description of the MBean
+     * ConfigurationMBean.mbean = Configuration manager
+     *
+     * # Description of the Name attribute
+     * ConfigurationMBean.attribute.Name = The name of the configuration
+     *
+     * # Description of the save operation
+     * ConfigurationMBean.operation.save = Save the configuration to a file
+     *
+     * # Description of the parameter to the save operation.
+     * # Parameter names from the original Java source are not available,
+     * # so the default names are p1, p2, etc.  If the names were available,
+     * # this would be ConfigurationMBean.operation.save.fileName
+     * ConfigurationMBean.operation.save.p1 = The name of the file
+     *
+     * # Description of the constructor.  The default name of a constructor is
+     * # its fully-qualified class name.
+     * ConfigurationMBean.constructor.com.example.Configuration = <!--
+     * -->Constructor with name of default file
+     * # Description of the constructor parameter.
+     * ConfigurationMBean.constructor.com.example.Configuration.p1 = <!--
+     * -->Name of the default file
+     * </pre>
+     *
+     * <p>Starting with this file, you could create descriptions for the French
+     * locale by creating {@code com/example/MBeanDescriptions_fr.properties}.
+     * The keys in this file are the same as before but the text has been
+     * translated:
+     *
+     * <pre>
+     * ConfigurationMBean.mbean = Gestionnaire de configuration
+     *
+     * ConfigurationMBean.attribute.Name = Le nom de la configuration
+     *
+     * ConfigurationMBean.operation.save = Sauvegarder la configuration <!--
+     * -->dans un fichier
+     *
+     * ConfigurationMBean.operation.save.p1 = Le nom du fichier
+     *
+     * ConfigurationMBean.constructor.com.example.Configuration = <!--
+     * -->Constructeur avec nom du fichier par d&eacute;faut
+     * ConfigurationMBean.constructor.com.example.Configuration.p1 = <!--
+     * -->Nom du fichier par d&eacute;faut
+     * </pre>
+     *
+     * <p>The descriptions in {@code MBeanDescriptions.properties} and
+     * {@code MBeanDescriptions_fr.properties} will only be consulted if
+     * {@code localizeDescriptions} is called, perhaps because the
+     * MBean Server has been wrapped by {@link
+     * ClientContext#newLocalizeMBeanInfoForwarder} or because the
+     * connector server has been created with the {@link
+     * javax.management.remote.JMXConnectorServer#LOCALIZE_MBEAN_INFO_FORWARDER
+     * LOCALIZE_MBEAN_INFO_FORWARDER} option. If you want descriptions
+     * even when there is no localization step, then you should consider
+     * using {@link Description &#64;Description} annotations. Annotations
+     * provide descriptions by default but are overridden if {@code
+     * localizeDescriptions} is called.</p>
+     *
+     * @param locale the target locale for descriptions.  Cannot be null.
+     *
+     * @param loader the {@code ClassLoader} to use for looking up resource
+     * bundles.
+     *
+     * @return an {@code MBeanInfo} with descriptions appropriately localized.
+     *
+     * @throws NullPointerException if {@code locale} is null.
+     */
+    public MBeanInfo localizeDescriptions(Locale locale, ClassLoader loader) {
+        if (locale == null)
+            throw new NullPointerException("locale");
+        Descriptor d = getDescriptor();
+        String mbiLocaleString = (String) d.getFieldValue(JMX.LOCALE_FIELD);
+        if (locale.toString().equals(mbiLocaleString))
+            return this;
+        return new Rewriter(this, locale, loader).getMBeanInfo();
+    }
+
+    private static class Rewriter {
+        private final MBeanInfo mbi;
+        private final ClassLoader loader;
+        private final Locale locale;
+        private final String packageName;
+        private final String simpleClassNamePlusDot;
+        private ResourceBundle defaultBundle;
+        private boolean defaultBundleLoaded;
+
+        // ResourceBundle.getBundle throws NullPointerException
+        // if the loader is null, even though that is perfectly
+        // valid and means the bootstrap loader.  So we work
+        // around with a ClassLoader that is equivalent to the
+        // bootstrap loader but is not null.
+        private static final ClassLoader bootstrapLoader =
+                new ClassLoader(null) {};
+
+        Rewriter(MBeanInfo mbi, Locale locale, ClassLoader loader) {
+            this.mbi = mbi;
+            this.locale = locale;
+            if (loader == null)
+                loader = bootstrapLoader;
+            this.loader = loader;
+
+            String intfName = (String)
+                    mbi.getDescriptor().getFieldValue("interfaceClassName");
+            if (intfName == null)
+                intfName = mbi.getClassName();
+            int lastDot = intfName.lastIndexOf('.');
+            this.packageName = intfName.substring(0, lastDot + 1);
+            this.simpleClassNamePlusDot = intfName.substring(lastDot + 1) + ".";
+            // Inner classes show up as Outer$Inner so won't match the dot.
+            // When there is no dot, lastDot is -1,
+            // packageName is empty, and simpleClassNamePlusDot is intfName.
+        }
+
+        MBeanInfo getMBeanInfo() {
+            MBeanAttributeInfo[] mbais =
+                    rewrite(mbi.getAttributes(), "attribute.");
+            MBeanOperationInfo[] mbois =
+                    rewrite(mbi.getOperations(), "operation.");
+            MBeanConstructorInfo[] mbcis =
+                    rewrite(mbi.getConstructors(), "constructor.");
+            MBeanNotificationInfo[] mbnis =
+                    rewrite(mbi.getNotifications(), "notification.");
+            Descriptor d = mbi.getDescriptor();
+            d = changeLocale(d);
+            String description = getDescription(d, "mbean", "");
+            if (description == null)
+                description = mbi.getDescription();
+            return new MBeanInfo(
+                    mbi.getClassName(), description,
+                    mbais, mbcis, mbois, mbnis, d);
+        }
+
+        private Descriptor changeLocale(Descriptor d) {
+            if (d.getFieldValue(JMX.LOCALE_FIELD) != null) {
+                Map<String, Object> map = new HashMap<String, Object>();
+                for (String field : d.getFieldNames())
+                    map.put(field, d.getFieldValue(field));
+                map.remove(JMX.LOCALE_FIELD);
+                d = new ImmutableDescriptor(map);
+            }
+            return ImmutableDescriptor.union(
+                    d, new ImmutableDescriptor(JMX.LOCALE_FIELD + "=" + locale));
+        }
+
+        private String getDescription(
+                Descriptor d, String defaultPrefix, String defaultSuffix) {
+            ResourceBundle bundle = bundleFromDescriptor(d);
+            if (bundle == null)
+                return null;
+            String key =
+                    (String) d.getFieldValue(JMX.DESCRIPTION_RESOURCE_KEY_FIELD);
+            if (key == null)
+                key = simpleClassNamePlusDot + defaultPrefix + defaultSuffix;
+            return descriptionFromResource(bundle, key);
+        }
+
+        private <T extends MBeanFeatureInfo> T[] rewrite(
+                T[] features, String resourcePrefix) {
+            for (int i = 0; i < features.length; i++) {
+                T feature = features[i];
+                Descriptor d = feature.getDescriptor();
+                String description =
+                        getDescription(d, resourcePrefix, feature.getName());
+                if (description != null &&
+                        !description.equals(feature.getDescription())) {
+                    features[i] = setDescription(feature, description);
+                }
+            }
+            return features;
+        }
+
+        private <T extends MBeanFeatureInfo> T setDescription(
+                T feature, String description) {
+
+            Object newf;
+            String name = feature.getName();
+            Descriptor d = feature.getDescriptor();
+
+            if (feature instanceof MBeanAttributeInfo) {
+                MBeanAttributeInfo mbai = (MBeanAttributeInfo) feature;
+                newf = new MBeanAttributeInfo(
+                        name, mbai.getType(), description,
+                        mbai.isReadable(), mbai.isWritable(), mbai.isIs(),
+                        d);
+            } else if (feature instanceof MBeanOperationInfo) {
+                MBeanOperationInfo mboi = (MBeanOperationInfo) feature;
+                MBeanParameterInfo[] sig = rewrite(
+                        mboi.getSignature(), "operation." + name + ".");
+                newf = new MBeanOperationInfo(
+                        name, description, sig,
+                        mboi.getReturnType(), mboi.getImpact(), d);
+            } else if (feature instanceof MBeanConstructorInfo) {
+                MBeanConstructorInfo mbci = (MBeanConstructorInfo) feature;
+                MBeanParameterInfo[] sig = rewrite(
+                        mbci.getSignature(), "constructor." + name + ".");
+                newf = new MBeanConstructorInfo(
+                        name, description, sig, d);
+            } else if (feature instanceof MBeanNotificationInfo) {
+                MBeanNotificationInfo mbni = (MBeanNotificationInfo) feature;
+                newf = new MBeanNotificationInfo(
+                        mbni.getNotifTypes(), name, description, d);
+            } else if (feature instanceof MBeanParameterInfo) {
+                MBeanParameterInfo mbpi = (MBeanParameterInfo) feature;
+                newf = new MBeanParameterInfo(
+                        name, mbpi.getType(), description, d);
+            } else {
+                logger().log(Level.FINE, "Unknown feature type: " +
+                        feature.getClass());
+                newf = feature;
+            }
+
+            return Util.<T>cast(newf);
+        }
+
+        private ResourceBundle bundleFromDescriptor(Descriptor d) {
+            String bundleName = (String) d.getFieldValue(
+                    JMX.DESCRIPTION_RESOURCE_BUNDLE_BASE_NAME_FIELD);
+
+            if (bundleName != null)
+                return getBundle(bundleName);
+
+            if (defaultBundleLoaded)
+                return defaultBundle;
+
+            bundleName = packageName + "MBeanDescriptions";
+            defaultBundle = getBundle(bundleName);
+            defaultBundleLoaded = true;
+            return defaultBundle;
+        }
+
+        private String descriptionFromResource(
+                ResourceBundle bundle, String key) {
+            try {
+                return bundle.getString(key);
+            } catch (MissingResourceException e) {
+                logger().log(Level.FINEST, "No resource for " + key, e);
+            } catch (Exception e) {
+                logger().log(Level.FINE, "Bad resource for " + key, e);
+            }
+            return null;
+        }
+
+        private ResourceBundle getBundle(String name) {
+            try {
+                return ResourceBundle.getBundle(name, locale, loader);
+            } catch (Exception e) {
+                logger().log(Level.FINE,
+                           "Could not load ResourceBundle " + name, e);
+                return null;
+            }
+        }
+
+        private Logger logger() {
+            return Logger.getLogger("javax.management.locale");
+        }
+    }
 }
--- a/src/share/classes/javax/management/MBeanOperationInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanOperationInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -113,7 +113,7 @@
              methodSignature(method),
              method.getReturnType().getName(),
              UNKNOWN,
-             Introspector.descriptorForElement(method));
+             Introspector.descriptorForElement(method, false));
     }
 
     /**
@@ -308,17 +308,18 @@
        wrong should be less than the penalty we would pay if it were
        right and we needlessly hashed in the description and the
        parameter array.  */
+    @Override
     public int hashCode() {
         return getName().hashCode() ^ getReturnType().hashCode();
     }
 
     private static MBeanParameterInfo[] methodSignature(Method method) {
-        final Class[] classes = method.getParameterTypes();
+        final Class<?>[] classes = method.getParameterTypes();
         final Annotation[][] annots = method.getParameterAnnotations();
         return parameters(classes, annots);
     }
 
-    static MBeanParameterInfo[] parameters(Class[] classes,
+    static MBeanParameterInfo[] parameters(Class<?>[] classes,
                                            Annotation[][] annots) {
         final MBeanParameterInfo[] params =
             new MBeanParameterInfo[classes.length];
--- a/src/share/classes/javax/management/MBeanRegistration.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanRegistration.java	Thu Jan 29 18:33:52 2009 -0800
@@ -79,6 +79,9 @@
  * }
  * </pre>
  *
+ * <p>(Listeners may be invoked in the same thread as the caller of
+ * {@code sender.sendNotification}.)</p>
+ *
  * <p>A field to be injected must not be static.  It is recommended that
  * such fields be declared {@code volatile}.</p>
  *
--- a/src/share/classes/javax/management/MBeanServer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanServer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -186,11 +186,11 @@
  * caller's permissions must imply {@link
  * MBeanPermission#MBeanPermission(String,String,String,ObjectName,String)
  * MBeanPermission(mbeanServerName, null, null, null, "queryMBeans")}.
- * Additionally, for each MBean that matches <code>name</code>,
+ * Additionally, for each MBean <em>n</em> that matches <code>name</code>,
  * if the caller's permissions do not imply {@link
  * MBeanPermission#MBeanPermission(String,String,String,ObjectName,String)
- * MBeanPermission(mbeanServerName, className, null, name, "queryMBeans")}, the
- * MBean server will behave as if that MBean did not exist.</p>
+ * MBeanPermission(mbeanServerName, className, null, <em>n</em>, "queryMBeans")},
+ * the MBean server will behave as if that MBean did not exist.</p>
  *
  * <p>Certain query elements perform operations on the MBean server.
  * If the caller does not have the required permissions for a given
@@ -351,11 +351,14 @@
 
     /**
      * <p>Registers a pre-existing object as an MBean with the MBean
-     * server. If the object name given is null, the MBean must
-     * provide its own name by implementing the {@link
+     * server.  If the object name given is null, the
+     * MBean must provide its own name in one or both of two ways: by implementing the {@link
      * javax.management.MBeanRegistration MBeanRegistration} interface
      * and returning the name from the {@link
-     * MBeanRegistration#preRegister preRegister} method.</p>
+     * MBeanRegistration#preRegister preRegister} method; or by defining
+     * an {@code objectNameTemplate} field in its {@link Descriptor},
+     * typically using the {@link ObjectNameTemplate &#64;ObjectNameTemplate}
+     * annotation.</p>
      *
      * <p>If this method successfully registers an MBean, a notification
      * is sent as described <a href="#notif">above</a>.</p>
@@ -377,19 +380,19 @@
      * MBean will not be registered.
      * @exception RuntimeMBeanException If the <CODE>postRegister</CODE>
      * (<CODE>MBeanRegistration</CODE> interface) method of the MBean throws a
-     * <CODE>RuntimeException</CODE>, the <CODE>registerMBean<CODE> method will
+     * <CODE>RuntimeException</CODE>, the <CODE>registerMBean</CODE> method will
      * throw a <CODE>RuntimeMBeanException</CODE>, although the MBean
      * registration succeeded. In such a case, the MBean will be actually
-     * registered even though the <CODE>registerMBean<CODE> method
+     * registered even though the <CODE>registerMBean</CODE> method
      * threw an exception.  Note that <CODE>RuntimeMBeanException</CODE> can
      * also be thrown by <CODE>preRegister</CODE>, in which case the MBean
      * will not be registered.
      * @exception RuntimeErrorException If the <CODE>postRegister</CODE>
      * (<CODE>MBeanRegistration</CODE> interface) method of the MBean throws an
-     * <CODE>Error</CODE>, the <CODE>registerMBean<CODE> method will
+     * <CODE>Error</CODE>, the <CODE>registerMBean</CODE> method will
      * throw a <CODE>RuntimeErrorException</CODE>, although the MBean
      * registration succeeded. In such a case, the MBean will be actually
-     * registered even though the <CODE>registerMBean<CODE> method
+     * registered even though the <CODE>registerMBean</CODE> method
      * threw an exception.  Note that <CODE>RuntimeErrorException</CODE> can
      * also be thrown by <CODE>preRegister</CODE>, in which case the MBean
      * will not be registered.
@@ -411,6 +414,8 @@
      * is sent as described <a href="#notif">above</a>.</p>
      *
      * @throws RuntimeOperationsException {@inheritDoc}
+     * @throws RuntimeMBeanException {@inheritDoc}
+     * @throws RuntimeErrorException {@inheritDoc}
      */
     public void unregisterMBean(ObjectName name)
             throws InstanceNotFoundException, MBeanRegistrationException;
@@ -419,10 +424,16 @@
     public ObjectInstance getObjectInstance(ObjectName name)
             throws InstanceNotFoundException;
 
-    // doc comment inherited from MBeanServerConnection
+    /**
+     * {@inheritDoc}
+      * @throws RuntimeOperationsException {@inheritDoc}
+     */
     public Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query);
 
-    // doc comment inherited from MBeanServerConnection
+    /**
+     * {@inheritDoc}
+      * @throws RuntimeOperationsException {@inheritDoc}
+    */
     public Set<ObjectName> queryNames(ObjectName name, QueryExp query);
 
     // doc comment inherited from MBeanServerConnection
--- a/src/share/classes/javax/management/MBeanServerConnection.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanServerConnection.java	Thu Jan 29 18:33:52 2009 -0800
@@ -46,11 +46,14 @@
      * MBean server will use its {@link
      * javax.management.loading.ClassLoaderRepository Default Loader
      * Repository} to load the class of the MBean.  An object name is
-     * associated to the MBean.  If the object name given is null, the
-     * MBean must provide its own name by implementing the {@link
+     * associated with the MBean.  If the object name given is null, the
+     * MBean must provide its own name in one or both of two ways: by implementing the {@link
      * javax.management.MBeanRegistration MBeanRegistration} interface
      * and returning the name from the {@link
-     * MBeanRegistration#preRegister preRegister} method.</p>
+     * MBeanRegistration#preRegister preRegister} method; or by defining
+     * an {@code objectNameTemplate} field in its {@link Descriptor},
+     * typically using the {@link ObjectNameTemplate &#64;ObjectNameTemplate}
+     * annotation.</p>
      *
      * <p>This method is equivalent to {@link
      * #createMBean(String,ObjectName,Object[],String[])
@@ -76,7 +79,9 @@
      * <CODE>preRegister</CODE> (<CODE>MBeanRegistration</CODE>
      * interface) method of the MBean has thrown an exception. The
      * MBean will not be registered.
-     * @exception RuntimeMBeanException If the <CODE>postRegister</CODE>
+     * @exception RuntimeMBeanException If the MBean's constructor or its
+     * {@code preRegister} or {@code postRegister} method threw
+     * a {@code RuntimeException}. If the <CODE>postRegister</CODE>
      * (<CODE>MBeanRegistration</CODE> interface) method of the MBean throws a
      * <CODE>RuntimeException</CODE>, the <CODE>createMBean</CODE> method will
      * throw a <CODE>RuntimeMBeanException</CODE>, although the MBean creation
@@ -115,13 +120,16 @@
     /**
      * <p>Instantiates and registers an MBean in the MBean server.  The
      * class loader to be used is identified by its object name. An
-     * object name is associated to the MBean. If the object name of
+     * object name is associated with the MBean. If the object name of
      * the loader is null, the ClassLoader that loaded the MBean
-     * server will be used.  If the MBean's object name given is null,
-     * the MBean must provide its own name by implementing the {@link
+     * server will be used.  If the object name given is null, the
+     * MBean must provide its own name in one or both of two ways: by implementing the {@link
      * javax.management.MBeanRegistration MBeanRegistration} interface
      * and returning the name from the {@link
-     * MBeanRegistration#preRegister preRegister} method.</p>
+     * MBeanRegistration#preRegister preRegister} method; or by defining
+     * an {@code objectNameTemplate} field in its {@link Descriptor},
+     * typically using the {@link ObjectNameTemplate &#64;ObjectNameTemplate}
+     * annotation.</p>
      *
      * <p>This method is equivalent to {@link
      * #createMBean(String,ObjectName,ObjectName,Object[],String[])
@@ -148,7 +156,9 @@
      * <CODE>preRegister</CODE> (<CODE>MBeanRegistration</CODE>
      * interface) method of the MBean has thrown an exception. The
      * MBean will not be registered.
-     * @exception RuntimeMBeanException If the <CODE>postRegister</CODE>
+     * @exception RuntimeMBeanException If the MBean's constructor or its
+     * {@code preRegister} or {@code postRegister} method threw
+     * a {@code RuntimeException}. If the <CODE>postRegister</CODE>
      * (<CODE>MBeanRegistration</CODE> interface) method of the MBean throws a
      * <CODE>RuntimeException</CODE>, the <CODE>createMBean</CODE> method will
      * throw a <CODE>RuntimeMBeanException</CODE>, although the MBean creation
@@ -194,11 +204,14 @@
      * MBean server will use its {@link
      * javax.management.loading.ClassLoaderRepository Default Loader
      * Repository} to load the class of the MBean.  An object name is
-     * associated to the MBean.  If the object name given is null, the
-     * MBean must provide its own name by implementing the {@link
+     * associated with the MBean.  If the object name given is null, the
+     * MBean must provide its own name in one or both of two ways: by implementing the {@link
      * javax.management.MBeanRegistration MBeanRegistration} interface
      * and returning the name from the {@link
-     * MBeanRegistration#preRegister preRegister} method.
+     * MBeanRegistration#preRegister preRegister} method; or by defining
+     * an {@code objectNameTemplate} field in its {@link Descriptor},
+     * typically using the {@link ObjectNameTemplate &#64;ObjectNameTemplate}
+     * annotation.</p>
      *
      * @param className The class name of the MBean to be instantiated.
      * @param name The object name of the MBean. May be null.
@@ -223,7 +236,9 @@
      * <CODE>preRegister</CODE> (<CODE>MBeanRegistration</CODE>
      * interface) method of the MBean has thrown an exception. The
      * MBean will not be registered.
-     * @exception RuntimeMBeanException If the <CODE>postRegister</CODE>
+     * @exception RuntimeMBeanException If the MBean's constructor or its
+     * {@code preRegister} or {@code postRegister} method threw
+     * a {@code RuntimeException}. If the <CODE>postRegister</CODE>
      * (<CODE>MBeanRegistration</CODE> interface) method of the MBean throws a
      * <CODE>RuntimeException</CODE>, the <CODE>createMBean</CODE> method will
      * throw a <CODE>RuntimeMBeanException</CODE>, although the MBean creation
@@ -261,15 +276,18 @@
                    NotCompliantMBeanException, IOException;
 
     /**
-     * Instantiates and registers an MBean in the MBean server.  The
+     * <p>Instantiates and registers an MBean in the MBean server.  The
      * class loader to be used is identified by its object name. An
-     * object name is associated to the MBean. If the object name of
+     * object name is associated with the MBean. If the object name of
      * the loader is not specified, the ClassLoader that loaded the
-     * MBean server will be used.  If the MBean object name given is
-     * null, the MBean must provide its own name by implementing the
-     * {@link javax.management.MBeanRegistration MBeanRegistration}
-     * interface and returning the name from the {@link
-     * MBeanRegistration#preRegister preRegister} method.
+     * MBean server will be used.  If the object name given is null, the
+     * MBean must provide its own name in one or both of two ways: by implementing the {@link
+     * javax.management.MBeanRegistration MBeanRegistration} interface
+     * and returning the name from the {@link
+     * MBeanRegistration#preRegister preRegister} method; or by defining
+     * an {@code objectNameTemplate} field in its {@link Descriptor},
+     * typically using the {@link ObjectNameTemplate &#64;ObjectNameTemplate}
+     * annotation.</p>
      *
      * @param className The class name of the MBean to be instantiated.
      * @param name The object name of the MBean. May be null.
@@ -295,7 +313,9 @@
      * <CODE>preRegister</CODE> (<CODE>MBeanRegistration</CODE>
      * interface) method of the MBean has thrown an exception. The
      * MBean will not be registered.
-     * @exception RuntimeMBeanException If the <CODE>postRegister</CODE>
+     * @exception RuntimeMBeanException The MBean's constructor or its
+     * {@code preRegister} or {@code postRegister} method threw
+     * a {@code RuntimeException}. If the <CODE>postRegister</CODE>
      * (<CODE>MBeanRegistration</CODE> interface) method of the MBean throws a
      * <CODE>RuntimeException</CODE>, the <CODE>createMBean</CODE> method will
      * throw a <CODE>RuntimeMBeanException</CODE>, although the MBean creation
@@ -416,7 +436,17 @@
      * specified, all the MBeans registered will be retrieved.
      * @param query The query expression to be applied for selecting
      * MBeans. If null no query expression will be applied for
-     * selecting MBeans.
+     * selecting MBeans.  ObjectName patterns that may be contained in the
+     * query expression will be
+     * <a href="namespace/package-summary.html#NamespaceAndQueries"><!--
+     * -->evaluated</a> in the context of the
+     * {@link javax.management.namespace namespace}
+     * in which the MBeans selected by {@code name} are registered.
+     * Thus, in the {@code query} parameter, no ObjectName pattern containing a
+     * namespace path can match any of the MBean names selected by {@code name}.
+     * See the
+     * <a href="namespace/package-summary.html#RejectedNamespacePatterns"><!--
+     * -->namespaces documentation</a> for more details.
      *
      * @return A set containing the <CODE>ObjectInstance</CODE>
      * objects for the selected MBeans.  If no MBean satisfies the
@@ -424,6 +454,11 @@
      *
      * @exception IOException A communication problem occurred when
      * talking to the MBean server.
+     * @exception RuntimeOperationsException Wraps a
+     * <CODE>java.lang.IllegalArgumentException</CODE>: The <em>name</em>
+     * parameter contains an invalid pattern. See the
+     * <a href="namespace/package-summary.html#RejectedNamespacePatterns"><!--
+     * -->namespaces documentation</a> for more details.
      */
     public Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query)
             throws IOException;
@@ -444,7 +479,17 @@
      * specified, the name of all registered MBeans will be retrieved.
      * @param query The query expression to be applied for selecting
      * MBeans. If null no query expression will be applied for
-     * selecting MBeans.
+     * selecting MBeans. ObjectName patterns that may be contained in the
+     * query expression will be
+     * <a href="namespace/package-summary.html#NamespaceAndQueries"><!--
+     * -->evaluated</a> in the context of the
+     * {@link javax.management.namespace namespace}
+     * in which the MBeans slected by {@code name} are registered.
+     * Thus, in the {@code query} parameter, no ObjectName pattern containing a
+     * namespace path can match any of the MBean names selected by {@code name}.
+     * See the
+     * <a href="namespace/package-summary.html#RejectedNamespacePatterns"><!--
+     * -->namespaces documentation</a> for more details.
      *
      * @return A set containing the ObjectNames for the MBeans
      * selected.  If no MBean satisfies the query, an empty list is
@@ -452,6 +497,11 @@
      *
      * @exception IOException A communication problem occurred when
      * talking to the MBean server.
+     * @exception RuntimeOperationsException Wraps a
+     * <CODE>java.lang.IllegalArgumentException</CODE>: The <em>name</em>
+     * parameter contains an invalid pattern. See the
+     * <a href="namespace/package-summary.html#RejectedNamespacePatterns"><!--
+     * -->namespaces documentation</a> for more details.
      */
     public Set<ObjectName> queryNames(ObjectName name, QueryExp query)
             throws IOException;
@@ -524,8 +574,30 @@
 
 
     /**
-     * Enables the values of several attributes of a named MBean. The MBean
-     * is identified by its object name.
+     * <p>Retrieves the values of several attributes of a named MBean. The MBean
+     * is identified by its object name.</p>
+     *
+     * <p>If one or more attributes cannot be retrieved for some reason, they
+     * will be omitted from the returned {@code AttributeList}.  The caller
+     * should check that the list is the same size as the {@code attributes}
+     * array.  To discover what problem prevented a given attribute from being
+     * retrieved, call {@link #getAttribute getAttribute} for that attribute.</p>
+     *
+     * <p>Here is an example of calling this method and checking that it
+     * succeeded in retrieving all the requested attributes:</p>
+     *
+     * <pre>
+     * String[] attrNames = ...;
+     * AttributeList list = mbeanServerConnection.getAttributes(objectName, attrNames);
+     * if (list.size() == attrNames.length)
+     *     System.out.println("All attributes were retrieved successfully");
+     * else {
+     *     {@code List<String>} missing = new {@code ArrayList<String>}(<!--
+     * -->{@link java.util.Arrays#asList Arrays.asList}(attrNames));
+     *     missing.removeAll(list.toMap().keySet());
+     *     System.out.println("Did not retrieve: " + missing);
+     * }
+     * </pre>
      *
      * @param name The object name of the MBean from which the
      * attributes are retrieved.
@@ -549,6 +621,7 @@
             throws InstanceNotFoundException, ReflectionException,
                    IOException;
 
+
     /**
      * Sets the value of a specific attribute of a named MBean. The MBean
      * is identified by its object name.
@@ -584,10 +657,36 @@
                    ReflectionException, IOException;
 
 
-
     /**
-     * Sets the values of several attributes of a named MBean. The MBean is
-     * identified by its object name.
+     * <p>Sets the values of several attributes of a named MBean. The MBean is
+     * identified by its object name.</p>
+     *
+     * <p>If one or more attributes cannot be set for some reason, they will be
+     * omitted from the returned {@code AttributeList}.  The caller should check
+     * that the input {@code AttributeList} is the same size as the output one.
+     * To discover what problem prevented a given attribute from being retrieved,
+     * it will usually be possible to call {@link #setAttribute setAttribute}
+     * for that attribute, although this is not guaranteed to work.  (For
+     * example, the values of two attributes may have been rejected because
+     * they were inconsistent with each other.  Setting one of them alone might
+     * be allowed.)<p>
+     *
+     * <p>Here is an example of calling this method and checking that it
+     * succeeded in setting all the requested attributes:</p>
+     *
+     * <pre>
+     * AttributeList inputAttrs = ...;
+     * AttributeList outputAttrs = mbeanServerConnection.setAttributes(<!--
+     * -->objectName, inputAttrs);
+     * if (inputAttrs.size() == outputAttrs.size())
+     *     System.out.println("All attributes were set successfully");
+     * else {
+     *     {@code List<String>} missing = new {@code ArrayList<String>}(<!--
+     * -->inputAttrs.toMap().keySet());
+     *     missing.removeAll(outputAttrs.toMap().keySet());
+     *     System.out.println("Did not set: " + missing);
+     * }
+     * </pre>
      *
      * @param name The object name of the MBean within which the
      * attributes are to be set.
@@ -614,7 +713,39 @@
         throws InstanceNotFoundException, ReflectionException, IOException;
 
     /**
-     * Invokes an operation on an MBean.
+     * <p>Invokes an operation on an MBean.</p>
+     *
+     * <p>Because of the need for a {@code signature} to differentiate
+     * possibly-overloaded operations, it is much simpler to invoke operations
+     * through an {@linkplain JMX#newMBeanProxy(MBeanServerConnection, ObjectName,
+     * Class) MBean proxy} where possible.  For example, suppose you have a
+     * Standard MBean interface like this:</p>
+     *
+     * <pre>
+     * public interface FooMBean {
+     *     public int countMatches(String[] patterns, boolean ignoreCase);
+     * }
+     * </pre>
+     *
+     * <p>The {@code countMatches} operation can be invoked as follows:</p>
+     *
+     * <pre>
+     * String[] myPatterns = ...;
+     * int count = (Integer) mbeanServerConnection.invoke(
+     *         objectName,
+     *         "countMatches",
+     *         new Object[] {myPatterns, true},
+     *         new String[] {String[].class.getName(), boolean.class.getName()});
+     * </pre>
+     *
+     * <p>Alternatively, it can be invoked through a proxy as follows:</p>
+     *
+     * <pre>
+     * String[] myPatterns = ...;
+     * FooMBean fooProxy = JMX.newMBeanProxy(
+     *         mbeanServerConnection, objectName, FooMBean.class);
+     * int count = fooProxy.countMatches(myPatterns, true);
+     * </pre>
      *
      * @param name The object name of the MBean on which the method is
      * to be invoked.
@@ -622,7 +753,8 @@
      * @param params An array containing the parameters to be set when
      * the operation is invoked
      * @param signature An array containing the signature of the
-     * operation. The class objects will be loaded using the same
+     * operation, an array of class names in the format returned by
+     * {@link Class#getName()}. The class objects will be loaded using the same
      * class loader as the one used for loading the MBean on which the
      * operation was invoked.
      *
--- a/src/share/classes/javax/management/MBeanServerFactory.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanServerFactory.java	Thu Jan 29 18:33:52 2009 -0800
@@ -747,7 +747,7 @@
      * Load the builder class through the context class loader.
      * @param builderClassName The name of the builder class.
      **/
-    private static Class loadBuilderClass(String builderClassName)
+    private static Class<?> loadBuilderClass(String builderClassName)
     throws ClassNotFoundException {
         final ClassLoader loader =
                 Thread.currentThread().getContextClassLoader();
@@ -767,7 +767,7 @@
      * If any checked exception needs to be thrown, it is embedded in
      * a JMRuntimeException.
      **/
-    private static MBeanServerBuilder newBuilder(Class builderClass) {
+    private static MBeanServerBuilder newBuilder(Class<?> builderClass) {
         try {
             final Object abuilder = builderClass.newInstance();
             return (MBeanServerBuilder)abuilder;
@@ -792,7 +792,7 @@
             String builderClassName = AccessController.doPrivileged(act);
 
             try {
-                final Class newBuilderClass;
+                final Class<?> newBuilderClass;
                 if (builderClassName == null || builderClassName.length() == 0)
                     newBuilderClass = MBeanServerBuilder.class;
                 else
@@ -800,7 +800,7 @@
 
                 // Check whether a new builder needs to be created
                 if (builder != null) {
-                    final Class builderClass = builder.getClass();
+                    final Class<?> builderClass = builder.getClass();
                     if (newBuilderClass == builderClass)
                         return; // no need to create a new builder...
                 }
--- a/src/share/classes/javax/management/MBeanServerInvocationHandler.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanServerInvocationHandler.java	Thu Jan 29 18:33:52 2009 -0800
@@ -253,12 +253,12 @@
                                          boolean notificationBroadcaster) {
         final InvocationHandler handler =
             new MBeanServerInvocationHandler(connection, objectName);
-        final Class[] interfaces;
+        final Class<?>[] interfaces;
         if (notificationBroadcaster) {
             interfaces =
-                new Class[] {interfaceClass, NotificationEmitter.class};
+                new Class<?>[] {interfaceClass, NotificationEmitter.class};
         } else
-            interfaces = new Class[] {interfaceClass};
+            interfaces = new Class<?>[] {interfaceClass};
 
         Object proxy =
             Proxy.newProxyInstance(interfaceClass.getClassLoader(),
@@ -269,7 +269,7 @@
 
     public Object invoke(Object proxy, Method method, Object[] args)
             throws Throwable {
-        final Class methodClass = method.getDeclaringClass();
+        final Class<?> methodClass = method.getDeclaringClass();
 
         if (methodClass.equals(NotificationBroadcaster.class)
             || methodClass.equals(NotificationEmitter.class))
@@ -285,8 +285,8 @@
                 return p.invoke(connection, objectName, method, args);
             } else {
                 final String methodName = method.getName();
-                final Class[] paramTypes = method.getParameterTypes();
-                final Class returnType = method.getReturnType();
+                final Class<?>[] paramTypes = method.getParameterTypes();
+                final Class<?> returnType = method.getReturnType();
 
                 /* Inexplicably, InvocationHandler specifies that args is null
                    when the method takes no arguments rather than a
@@ -361,7 +361,13 @@
                 if (p != null)
                     return p;
             }
-            p = new MXBeanProxy(mxbeanInterface, mappingFactory);
+            try {
+                p = new MXBeanProxy(mxbeanInterface, mappingFactory);
+            } catch (IllegalArgumentException e) {
+                String msg = "Cannot make MXBean proxy for " +
+                        mxbeanInterface.getName() + ": " + e.getMessage();
+                throw new IllegalArgumentException(msg, e.getCause());
+            }
             classToProxy.put(mxbeanInterface, new WeakReference<MXBeanProxy>(p));
             return p;
         }
@@ -452,7 +458,7 @@
             return true;
         if (methodName.equals("equals")
             && Arrays.equals(method.getParameterTypes(),
-                             new Class[] {Object.class})
+                             new Class<?>[] {Object.class})
             && isLocal(proxy, method))
             return true;
         return false;
--- a/src/share/classes/javax/management/MBeanServerNotification.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/MBeanServerNotification.java	Thu Jan 29 18:33:52 2009 -0800
@@ -27,15 +27,124 @@
 
 
 /**
- * Represents a notification emitted by the MBean server through the MBeanServerDelegate MBean.
+ * Represents a notification emitted by the MBean Server through the MBeanServerDelegate MBean.
  * The MBean Server emits the following types of notifications: MBean registration, MBean
- * de-registration.
+ * unregistration.
  * <P>
- * To receive to MBeanServerNotifications, you need to be declared as listener to
- * the {@link javax.management.MBeanServerDelegate javax.management.MBeanServerDelegate} MBean
- * that represents the MBeanServer. The ObjectName of the MBeanServerDelegate is:
+ * To receive MBeanServerNotifications, you need to register a listener with
+ * the {@link MBeanServerDelegate MBeanServerDelegate} MBean
+ * that represents the MBeanServer. The ObjectName of the MBeanServerDelegate is
+ * {@link MBeanServerDelegate#DELEGATE_NAME}, which is
  * <CODE>JMImplementation:type=MBeanServerDelegate</CODE>.
  *
+ * <p>The following code prints a message every time an MBean is registered
+ * or unregistered in the MBean Server {@code mbeanServer}:</p>
+ *
+ * <pre>
+ * private static final NotificationListener printListener = new NotificationListener() {
+ *     public void handleNotification(Notification n, Object handback) {
+ *         if (!(n instanceof MBeanServerNotification)) {
+ *             System.out.println("Ignored notification of class " + n.getClass().getName());
+ *             return;
+ *         }
+ *         MBeanServerNotification mbsn = (MBeanServerNotification) n;
+ *         String what;
+ *         if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION))
+ *             what = "MBean registered";
+ *         else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION))
+ *             what = "MBean unregistered";
+ *         else
+ *             what = "Unknown type " + n.getType();
+ *         System.out.println("Received MBean Server notification: " + what + ": " +
+ *                 mbsn.getMBeanName());
+ *     }
+ * };
+ *
+ * ...
+ *     mbeanServer.addNotificationListener(
+ *             MBeanServerDelegate.DELEGATE_NAME, printListener, null, null);
+ * </pre>
+ * <p id="group">
+ * An MBean which is not an {@link MBeanServerDelegate} may also emit
+ * MBeanServerNotifications. In particular, a custom subclass of the
+ * {@link javax.management.namespace.JMXDomain JMXDomain} MBean or a custom
+ * subclass of the {@link javax.management.namespace.JMXNamespace JMXNamespace}
+ * MBean may emit an MBeanServerNotification for a group of MBeans.<br>
+ * An MBeanServerNotification emitted to denote the registration or
+ * unregistration of a group of MBeans has the following characteristics:
+ * <ul><li>Its {@linkplain Notification#getType() notification type} is
+ *     {@code "JMX.mbean.registered.group"} or
+ *     {@code "JMX.mbean.unregistered.group"}, which can also be written {@link
+ *     MBeanServerNotification#REGISTRATION_NOTIFICATION}{@code + ".group"} or
+ *     {@link
+ *     MBeanServerNotification#UNREGISTRATION_NOTIFICATION}{@code + ".group"}.
+ * </li>
+ * <li>Its {@linkplain #getMBeanName() MBean name} is an ObjectName pattern
+ *     that selects the set (or a superset) of the MBeans being registered
+ *     or unregistered</li>
+ * <li>Its {@linkplain Notification#getUserData() user data} can optionally
+ *     be set to an array of ObjectNames containing the names of all MBeans
+ *     being registered or unregistered.</li>
+ * </ul>
+ * </p>
+ * <p>
+ * MBeans which emit these group registration/unregistration notifications will
+ * declare them in their {@link MBeanInfo#getNotifications()
+ * MBeanNotificationInfo}.
+ * </p>
+ * <P>
+ * To receive a group MBeanServerNotification, you need to register a listener
+ * with the MBean that emits it. For instance, assuming that the {@link
+ * javax.management.namespace.JMXNamespace JMXNamespace} MBean handling
+ * namespace {@code "foo"} has declared that it emits such a notification,
+ * you will need to register your notification listener with that MBean, which
+ * will be named {@link
+ * javax.management.namespace.JMXNamespaces#getNamespaceObjectName(java.lang.String)
+ * foo//:type=JMXNamespace}.
+ * </p>
+ * <p>The following code prints a message every time a group of MBean is
+ * registered or unregistered in the namespace {@code "foo"}, assumimg its
+ * {@link javax.management.namespace.JMXNamespace handler} supports
+ * group MBeanServerNotifications:</p>
+ *
+ * <pre>
+ * private static final NotificationListener printListener = new NotificationListener() {
+ *     public void handleNotification(Notification n, Object handback) {
+ *         if (!(n instanceof MBeanServerNotification)) {
+ *             System.out.println("Ignored notification of class " + n.getClass().getName());
+ *             return;
+ *         }
+ *         MBeanServerNotification mbsn = (MBeanServerNotification) n;
+ *         String what;
+ *         ObjectName[] names = null;
+ *         if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION)) {
+ *             what = "MBean registered";
+ *         } else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) {
+ *             what = "MBean unregistered";
+ *         } else if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION+".group")) {
+ *             what = "Group of MBeans registered matching";
+ *             if (mbsn.getUserData() instanceof ObjectName[])
+ *                names =  (ObjectName[]) mbsn.getUserData();
+ *         } else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION+".group")) {
+ *             what = "Group of MBeans unregistered matching";
+ *             if (mbsn.getUserData() instanceof ObjectName[])
+ *                names = (ObjectName[]) mbsn.getUserData();
+ *         } else
+ *             what = "Unknown type " + n.getType();
+ *         System.out.println("Received MBean Server notification: " + what + ": " +
+ *                 mbsn.getMBeanName());
+ *         if (names != null) {
+ *              for (ObjectName mb : names)
+ *                  System.out.println("\t"+mb);
+ *         }
+ *     }
+ * };
+ *
+ * ...
+ *     mbeanServer.addNotificationListener(
+ *             JMXNamespaces.getNamespaceObjectName("foo"), printListener, null, null);
+ * </pre>
+ *
  * @since 1.5
  */
 public class MBeanServerNotification extends Notification {
--- a/src/share/classes/javax/management/Notification.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/Notification.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -54,7 +54,7 @@
  * @since 1.5
  */
 @SuppressWarnings("serial")  // serialVersionUID is not constant
-public class Notification extends EventObject {
+public class Notification extends EventObject implements Cloneable {
 
     // Serialization compatibility stuff:
     // Two serial forms are supported in this class. The selected form depends
@@ -244,6 +244,26 @@
     }
 
     /**
+     * <p>Creates and returns a copy of this object.  The copy is created as
+     * described for {@link Object#clone()}.  This means, first, that the
+     * class of the object will be the same as the class of this object, and,
+     * second, that the copy is a "shallow copy".  Fields of this notification
+     * are not themselves copied.  In particular, the {@linkplain
+     * #getUserData user data} of the copy is the same object as the
+     * original.</p>
+     *
+     * @return a copy of this object.
+     */
+    @Override
+    public Object clone() {
+        try {
+            return super.clone();
+        } catch (CloneNotSupportedException e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    /**
      * Sets the source.
      *
      * @param source the new source for this object.
@@ -285,8 +305,10 @@
     /**
      * Get the notification type.
      *
-     * @return The notification type. It's a string expressed in a dot notation similar
-     * to Java properties. An example of a notification type is network.alarm.router .
+     * @return The notification type. It's a string expressed in a dot notation
+     * similar to Java properties. It is recommended that the notification type
+     * should follow the reverse-domain-name convention used by Java package
+     * names.  An example of a notification type is com.example.alarm.router.
      */
     public String getType() {
         return type ;
@@ -317,15 +339,26 @@
     /**
      * Get the notification message.
      *
-     * @return The message string of this notification object. It contains in a string,
-     * which could be the explanation of the notification for displaying to a user
+     * @return The message string of this notification object.
      *
+     * @see #setMessage
      */
     public String getMessage() {
         return message ;
     }
 
     /**
+     * Set the notification message.
+     *
+     * @param message the new notification message.
+     *
+     * @see #getMessage
+     */
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    /**
      * Get the user data.
      *
      * @return The user data object. It is used for whatever data
@@ -355,6 +388,7 @@
      *
      * @return A String representation of this notification.
      */
+    @Override
     public String toString() {
         return super.toString()+"[type="+type+"][message="+message+"]";
     }
--- a/src/share/classes/javax/management/NotificationBroadcasterSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/NotificationBroadcasterSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -249,6 +249,26 @@
             }
         }
     }
+    /**
+     * Returns true if there are any listeners.
+     *
+     * @return true if there is at least one listener that has been added with
+     * {@code addNotificationListener} and not subsequently removed with
+     * {@code removeNotificationListener} or {@code removeAllNotificationListeners}.
+     * @since 1.7
+     */
+    public boolean isListenedTo() {
+        return listenerList.size() > 0;
+    }
+
+    /**
+     * Removes all listeners.
+     *
+     * @since 1.7
+     */
+    public void removeAllNotificationListeners() {
+        listenerList.clear();
+    }
 
     /**
      * <p>This method is called by {@link #sendNotification
--- a/src/share/classes/javax/management/NotificationInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/NotificationInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -44,7 +44,13 @@
  *                          "com.example.notifs.destroy"})
  * public interface CacheMBean {...}
  *
- * public class Cache implements CacheMBean {...}
+ * public class Cache
+ *         extends NotificationBroadcasterSupport implements CacheMBean {
+ *     public Cache() {
+ *         super();   // do not supply any MBeanNotificationInfo[]
+ *     }
+ *     ...
+ * }
  * </pre>
  *
  * <pre>
@@ -52,7 +58,11 @@
  * {@link MBean @MBean}
  * {@code @NotificationInfo}(types={"com.example.notifs.create",
  *                          "com.example.notifs.destroy"})
- * public class Cache {...}
+ * public class Cache {
+ *     <a href="MBeanRegistration.html#injection">{@code @Resource}</a>
+ *     private volatile SendNotification sendNotification;
+ *     ...
+ * }
  * </pre>
  *
  * <p>Each {@code @NotificationInfo} produces an {@link
@@ -64,6 +74,13 @@
  * several {@code @NotificationInfo} annotations into a containing
  * {@link NotificationInfos @NotificationInfos} annotation.
  *
+ * <p>The {@code @NotificationInfo} and {@code @NotificationInfos} annotations
+ * are ignored on an MBean that is not a {@linkplain JMX#isNotificationSource
+ * notification source} or that implements {@link NotificationBroadcaster} and
+ * returns a non-empty array from its {@link
+ * NotificationBroadcaster#getNotificationInfo() getNotificationInfo()}
+ * method.</p>
+ *
  * <p>The {@code NotificationInfo} and {@code NotificationInfos}
  * annotations can be applied to the MBean implementation class, or to
  * any parent class or interface.  These annotations on a class take
@@ -71,7 +88,8 @@
  * If an MBean does not have these annotations on its class or any
  * superclass, then superinterfaces are examined.  It is an error for
  * more than one superinterface to have these annotations, unless one
- * of them is a child of all the others.</p>
+ * of them is a descendant of all the others; registering such an erroneous
+ * MBean will cause a {@link NotCompliantMBeanException}.</p>
  */
 @Documented
 @Inherited
--- a/src/share/classes/javax/management/NotificationListener.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/NotificationListener.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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,11 +39,10 @@
     * blocking its notification broadcaster.
     *
     * @param notification The notification.
-    * @param handback An opaque object which helps the listener to associate information
-    * regarding the MBean emitter. This object is passed to the MBean during the
-    * addListener call and resent, without modification, to the listener. The MBean object
-    * should not use or modify the object.
-    *
+    * @param handback An opaque object which helps the listener to associate
+    * information regarding the MBean emitter. This object is passed to the
+    * addNotificationListener call and resent, without modification, to the
+    * listener.
     */
-    public void handleNotification(Notification notification, Object handback) ;
+    public void handleNotification(Notification notification, Object handback);
 }
--- a/src/share/classes/javax/management/ObjectName.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/ObjectName.java	Thu Jan 29 18:33:52 2009 -0800
@@ -56,14 +56,38 @@
  * properties.</p>
  *
  * <p>The <em>domain</em> is a string of characters not including
- * the character colon (<code>:</code>).  It is recommended that the domain
- * should not contain the string "{@code //}", which is reserved for future use.
+ * the character colon (<code>:</code>).</p>
+ * <p>Starting with the version 2.0 of the JMX specification, the
+ * <em>domain</em> can also start with a {@linkplain
+ * javax.management.namespace#NamespacePrefix namespace prefix} identifying
+ * the {@linkplain javax.management.namespace namespace} in which the
+ * MBean is registered. A namespace prefix is a path string where
+ * elements are separated by a double slash (<code>//</code>).
+ * It identifies the {@linkplain  javax.management.namespace namespace} in
+ * which the MBean so named is registered.</p>
+ *
+ * <p>For instance the ObjectName <em>bar//baz:k=v</em> identifiies an MBean
+ * named <em>baz:k=v</em> in the namespace <em>bar</em>. Similarly the
+ * ObjectName <em>foo//bar//baz:k=v</em> identifiies an MBean named
+ * <em>baz:k=v</em> in the namespace <em>foo//bar</em>. See the {@linkplain
+ * javax.management.namespace namespace} documentation for more details.</p>
  *
  * <p>If the domain includes at least one occurrence of the wildcard
  * characters asterisk (<code>*</code>) or question mark
  * (<code>?</code>), then the object name is a pattern.  The asterisk
  * matches any sequence of zero or more characters, while the question
- * mark matches any single character.</p>
+ * mark matches any single character. <br>
+ * A namespace separator <code>//</code> does not match wildcard
+ * characters unless it is at the very end of the domain string.
+ * So <em>foo*bar*:*</em> does not match <em>foo//bar:k=v</em> but it
+ * does match <em>fooxbar//:k=v</em>.
+ * </p>
+ *
+ * <p>When included in a namespace path the special path element
+ * <code>**</code> matches any number of sub namespaces
+ * recursively, but only if used as a complete namespace path element,
+ * as in <code>*&#42;//b//c//D:k=v</code> or <code>a//*&#42;//c//D:k=v</code>
+ * - see <a href="#metawildcard">below</a>.
  *
  * <p>If the domain is empty, it will be replaced in certain contexts
  * by the <em>default domain</em> of the MBean server in which the
@@ -171,6 +195,51 @@
  *     with {@code \}.</li>
  * </ul>
  *
+ * <p id="metawildcard"><b>Pattern and namespaces:</b></p>
+ * <p>In an object name pattern, a path element
+ *    of exactly <code>**</code> corresponds to a meta
+ *    wildcard that will match any number of sub namespaces.<br>Hence:</p>
+ * <table border="0" cellpadding="5">
+ * <thead><th>pattern</th><th>matches</th><th>doesn't match</th></thead>
+ * <tbody>
+ * <tr><td><ul><li><code>*&#42;//D:k=v</code></li></ul></td>
+ *     <td><code>a//D:k=v</code><br>
+ *         <code>a//b//D:k=v</code><br>
+ *         <code>a//b//c//D:k=v</code></td>
+ *     <td><code>D:k=v</code></td></tr>
+ * <tr><td><ul><li><code>a//*&#42;//D:k=v</code></li></ul></td>
+ *     <td><code>a//b//D:k=v</code><br>
+ *         <code>a//b//c//D:k=v</code></td>
+ *     <td><code>b//b//c//D:k=v</code><br>
+ *         <code>a//D:k=v</code><br>
+ *         <code>D:k=v</code></td></tr>
+ * <tr><td><ul><li><code>a//*&#42;//e//D:k=v</code></li></ul></td>
+ *     <td><code>a//b//e//D:k=v</code><br>
+ *         <code>a//b//c//e//D:k=v</code></td>
+ *     <td><code>a//b//c//c//D:k=v</code><br>
+ *         <code>b//b//c//e//D:k=v</code><br>
+ *         <code>a//e//D:k=v</code><br>
+ *         <code>e//D:k=v</code></td></tr>
+ * <tr><td><ul><li><code>a//b*&#42;//e//D:k=v</code></li></ul></td>
+ *      <td><code>a//b//e//D:k=v</code></td>
+ *      <td><code>a//b//c//e//D:k=v</code><br>
+ *          because in that case <code>b*&#42;</code><br>
+ *         is not a meta-wildcard - and <code>b**</code><br>
+ *         is thus equivalent to <code>b*</code>.</td></tr>
+ * </tbody>
+ * </table>
+ *</ul>
+ * </p>
+ * <p>
+ * <b>Note:</b> Although ObjectName patterns where the characters
+ * <code>*</code> and <code>?</code> appear in the namespace path are legal,
+ * they are not valid in the {@code name} parameter of the MBean Server's
+ * {@link MBeanServer#queryNames queryNames} and {@link MBeanServer#queryMBeans
+ * queryMBeans} methods. See the
+ * <a href="namespace/package-summary.html#RejectedNamespacePatterns"><!--
+ * -->namespaces documentation</a> for more details.
+ * </p>
+ *
  * <p>An ObjectName can be written as a String with the following
  * elements in order:</p>
  *
@@ -439,11 +508,6 @@
         _propertyList = aname._propertyList;
         _property_list_pattern = aname._property_list_pattern;
         _property_value_pattern = aname._property_value_pattern;
-        // TODO remove this hack
-        // if (toString().endsWith("//javax.management.service:type1=event_client_delegeate_mbean,type2=default")) {
-        //    Thread.currentThread().dumpStack();
-        //    throw new Error("************************ Gotcha!");
-        //}
     }
 
     // Instance private fields <=======================================
@@ -1096,11 +1160,10 @@
      */
     private boolean isDomain(String domain) {
         if (domain == null) return true;
-        final char[] d=domain.toCharArray();
-        final int len = d.length;
+        final int len = domain.length();
         int next = 0;
         while (next < len) {
-            final char c = d[next++];
+            final char c = domain.charAt(next++);
             switch (c) {
                 case ':' :
                 case '\n' :
@@ -1234,12 +1297,6 @@
         if (!nw.equals("")) {
             nameString = nw + NAMESPACE_SEPARATOR + nameString;
         }
-        // TODO remove this hack
-        // if (nameString.endsWith("//javax.management.service:type1=event_client_delegeate_mbean,type2=default")) {
-        //    System.err.println("old="+old+", nw="+nw);
-        //    Thread.currentThread().dumpStack();
-        //    throw new Error("************************ Gotcha!");
-        // }
         return nameString;
     }
 
@@ -1584,13 +1641,18 @@
      * @return A new {@code ObjectName} that is the same as {@code this}
      *         except the domain is {@code newDomain}.
      * @throws NullPointerException if {@code newDomain} is null.
-     * @throws MalformedObjectNameException if the new domain is syntactically
-     *         illegal.
+     * @exception IllegalArgumentException The {@code newDomain} passed as a
+     * parameter does not have the right format.  The {@linkplain
+     * Throwable#getCause() cause} of this exception will be a
+     * {@link MalformedObjectNameException}.
      * @since 1.7
      **/
-    public final ObjectName withDomain(String newDomain)
-            throws MalformedObjectNameException {
-        return new ObjectName(newDomain, this);
+    public final ObjectName withDomain(String newDomain) {
+        try {
+            return new ObjectName(newDomain, this);
+        } catch (MalformedObjectNameException x) {
+            throw new IllegalArgumentException(x.getMessage(),x);
+        }
     }
 
     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/javax/management/ObjectNameTemplate.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.management;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation to allow an MBean to provide its name.
+ * This annotation can be used on the following types:
+ * <ul>
+ *   <li>MBean or MXBean Java interface.</li>
+ *   <li>Java class annotated with {@link javax.management.MBean &#64;MBean}</code>
+ * annotation.</li>
+ *   <li>Java class annotated with {@link javax.management.MXBean &#64;MXBean}</code>
+ * annotation.</li>
+ * </ul>
+ *
+ * <p>The value of this annotation is used to build the <code>ObjectName</code>
+ * when instances of the annotated type are registered in
+ * an <code>MBeanServer</code> and no explicit name is given to the
+ * {@code createMBean} or {@code registerMBean} method (the {@code ObjectName}
+ * is {@code null}).</p>
+ *
+ * <p>For Dynamic MBeans, which define their own {@code MBeanInfo}, you can
+ * produce the same effect as this annotation by including a field
+ * <a href="Descriptor.html#objectNameTemplate">{@code objectNameTemplate}</a>
+ * in the {@link Descriptor} for the {@code MBeanInfo} returned by
+ * {@link DynamicMBean#getMBeanInfo()}.</p>
+ *
+ * <p>For Standard MBeans and MXBeans, this annotation automatically produces
+ * an {@code objectNameTemplate} field in the {@code Descriptor}.</p>
+ *
+ * <p>The template can contain variables so that the name of the MBean
+ * depends on the value of one or more of its attributes.
+ * A variable that identifies an MBean attribute is of the form
+ * <code>{<em>attribute name</em>}</code>. For example, to make an MBean name
+ * depend on the <code>Name</code> attribute, use the variable
+ * <code>{Name}</code>. Attribute names are case sensitive.
+ * Naming attributes can be of any type. The <code>String</code> returned by
+ * <code>toString()</code> is included in the constructed name.</p>
+ *
+ * <p>If you need the attribute value to be quoted
+ * by a call to {@link ObjectName#quote(String) ObjectName.quote},
+ * surround the variable with quotes. Quoting only applies to key values.
+ * For example, <code>@ObjectNameTemplate("java.lang:type=MemoryPool,name=\"{Name}\"")</code>,
+ * quotes the <code>Name</code> attribute value. You can notice the "\"
+ * character needed to escape a quote within a <code>String</code>. A name
+ * produced by this template might look like
+ * {@code java.lang:type=MemoryPool,name="Code Cache"}.</p>
+ *
+ * <p>Variables can be used anywhere in the <code>String</code>.
+ * Be sure to make the template derived name comply with
+ * {@link ObjectName ObjectName} syntax.</p>
+ *
+ * <p>If an MBean is registered with a null name and it implements
+ * {@link javax.management.MBeanRegistration MBeanRegistration}, then
+ * the computed name is provided to the <code>preRegister</code> method.
+ * Similarly,
+ * if the MBean uses <a href="MBeanRegistration.html#injection">resource
+ * injection</a> to discover its name, it is the computed name that will
+ * be injected.</p>
+ * <p>All of the above can be used with the {@link StandardMBean} class and
+ * the annotation is effective in that case too.</p>
+ * <p>If any exception occurs (such as unknown attribute, invalid syntax or
+ * exception
+ * thrown by the MBean) when the name is computed it is wrapped in a
+ * <code>NotCompliantMBeanException</code>.</p>
+ * <p>Some ObjectName template examples:
+ * <ul><li>"com.example:type=Memory". Fixed ObjectName. Used to name a
+ * singleton MBean.</li>
+ * <li>"com.example:type=MemoryPool,name={Name}". Variable ObjectName.
+ * <code>Name</code> attribute is retrieved to compose the <code>name</code>
+ * key value.</li>
+ * <li>"com.example:type=SomeType,name={InstanceName},id={InstanceId}".
+ * Variable ObjectName.
+ * <code>InstanceName</code> and <code>InstanceId</code> attributes are
+ * retrieved to compose respectively
+ * the <code>name</code> and <code>id</code> key values.</li>
+ * <li>"com.example:type=OtherType,name=\"{ComplexName}\"". Variable ObjectName.
+ * <code>ComplexName</code> attribute is retrieved to compose the
+ * <code>name</code> key quoted value.</li> </li>
+ * <li>"com.example:{TypeKey}=SomeOtherType". Variable ObjectName.
+ * <code>TypeKey</code> attribute is retrieved to compose the
+ * first key name.</li>
+ * * <li>"{Domain}:type=YetAnotherType". Variable ObjectName.
+ * <code>Domain</code> attribute is retrieved to compose the
+ * management domain.</li>
+ * <li>"{Naming}". Variable ObjectName.
+ * <code>Naming</code> attribute is retrieved to compose the
+ * complete name.</li>
+ * </ul>
+ * </p>
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ObjectNameTemplate {
+
+    /**
+     * The MBean name template.
+     * @return The MBean name template.
+     */
+    @DescriptorKey("objectNameTemplate")
+    public String value();
+}
--- a/src/share/classes/javax/management/QueryNotificationFilter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/QueryNotificationFilter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -26,7 +26,6 @@
 package javax.management;
 
 import com.sun.jmx.mbeanserver.NotificationMBeanSupport;
-import com.sun.jmx.mbeanserver.Util;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -43,6 +42,11 @@
  * on both the client and the server in the remote case, so using this class
  * instead is recommended where possible.</p>
  *
+ * <p>Because this class was introduced in version 2.0 of the JMX API,
+ * it may not be present on a remote JMX agent that is running an earlier
+ * version.  The method {@link JMX#getSpecificationVersion
+ * JMX.getSpecificationVersion} can be used to determine the remote version.</p>
+ *
  * <p>This class uses the {@linkplain Query Query API} to specify the
  * filtering logic.  For example, to select only notifications where the
  * {@linkplain Notification#getType() type} is {@code "com.example.mytype"},
--- a/src/share/classes/javax/management/StandardEmitterMBean.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/StandardEmitterMBean.java	Thu Jan 29 18:33:52 2009 -0800
@@ -26,6 +26,7 @@
 package javax.management;
 
 import com.sun.jmx.mbeanserver.MBeanInjector;
+import com.sun.jmx.mbeanserver.MBeanIntrospector;
 import static javax.management.JMX.MBeanOptions;
 
 /**
@@ -195,10 +196,12 @@
                                     MBeanOptions options,
                                     NotificationEmitter emitter) {
         super(implementation, mbeanInterface, options);
+        MBeanNotificationInfo[] defaultMBNIs = defaultMBNIs(implementation);
         if (emitter == null)
-            emitter = defaultEmitter();
+            emitter = defaultEmitter(defaultMBNIs);
         this.emitter = emitter;
-        this.notificationInfo = emitter.getNotificationInfo();
+        this.notificationInfo =
+                firstNonEmpty(emitter.getNotificationInfo(), defaultMBNIs);
         injectEmitter();
     }
 
@@ -320,15 +323,23 @@
     protected StandardEmitterMBean(Class<?> mbeanInterface, MBeanOptions options,
                                    NotificationEmitter emitter) {
         super(mbeanInterface, options);
+        MBeanNotificationInfo[] defaultMBNIs = defaultMBNIs(this);
         if (emitter == null)
-            emitter = defaultEmitter();
+            emitter = defaultEmitter(defaultMBNIs);
         this.emitter = emitter;
-        this.notificationInfo = emitter.getNotificationInfo();
+        this.notificationInfo =
+                firstNonEmpty(emitter.getNotificationInfo(), defaultMBNIs);
         injectEmitter();
     }
 
-    private NotificationEmitter defaultEmitter() {
-        MBeanNotificationInfo[] mbnis = getNotificationInfo();
+    private static MBeanNotificationInfo[] defaultMBNIs(Object mbean) {
+        return MBeanIntrospector.findNotificationsFromAnnotations(
+                mbean.getClass());
+    }
+
+    private NotificationEmitter defaultEmitter(MBeanNotificationInfo[] defaultMBNIs) {
+        MBeanNotificationInfo[] mbnis =
+                firstNonEmpty(getNotificationInfo(), defaultMBNIs);
         // Will be null unless getNotificationInfo() is overridden,
         // since the notificationInfo field has not been set at this point.
         if (mbnis == null)
@@ -336,6 +347,14 @@
         return new NotificationBroadcasterSupport(mbnis);
     }
 
+    private static <T> T[] firstNonEmpty(T[]... items) {
+        for (T[] t : items) {
+            if (t != null && t.length != 0)
+                return t;
+        }
+        return null;
+    }
+
     private void injectEmitter() {
         if (emitter instanceof SendNotification) {
             try {
--- a/src/share/classes/javax/management/StandardMBean.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/StandardMBean.java	Thu Jan 29 18:33:52 2009 -0800
@@ -28,14 +28,21 @@
 import com.sun.jmx.mbeanserver.DescriptorCache;
 import com.sun.jmx.mbeanserver.Introspector;
 import com.sun.jmx.mbeanserver.MBeanInjector;
+import com.sun.jmx.mbeanserver.MBeanInstantiator;
+import com.sun.jmx.mbeanserver.MBeanIntrospector;
 import com.sun.jmx.mbeanserver.MBeanSupport;
 import com.sun.jmx.mbeanserver.MXBeanSupport;
 import com.sun.jmx.mbeanserver.StandardMBeanSupport;
 import com.sun.jmx.mbeanserver.Util;
+import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.WeakHashMap;
 import java.util.logging.Level;
 import javax.management.openmbean.MXBeanMappingFactory;
@@ -135,6 +142,7 @@
         private static final long serialVersionUID = 5107355471177517164L;
 
         private boolean wrappedVisible;
+        private boolean forwardRegistration;
 
         /**
          * <p>Construct an {@code Options} object where all options have
@@ -177,15 +185,56 @@
             this.wrappedVisible = visible;
         }
 
-        // Canonical objects for each of (MXBean,!MXBean) x (WVisible,!WVisible)
+        /**
+         * <p>Defines whether the {@link MBeanRegistration MBeanRegistration}
+         * callbacks are forwarded to the wrapped object.</p>
+         *
+         * <p>If this option is true, then
+         * {@link #preRegister(MBeanServer, ObjectName) preRegister},
+         * {@link #postRegister(Boolean) postRegister},
+         * {@link #preDeregister preDeregister} and
+         * {@link #postDeregister postDeregister} methods are forwarded
+         * to the wrapped object, in addition to the behaviour specified
+         * for the StandardMBean instance itself.
+         * The default value is false for compatibility reasons, but true
+         * is a better value for most new code.</p>
+         *
+         * @return true if the <code>MBeanRegistration</code> callbacks
+         * are forwarded to the wrapped object.
+         */
+        public boolean isMBeanRegistrationForwarded() {
+            return this.forwardRegistration;
+        }
+
+        /**
+         * <p>Set the
+         * {@link #isMBeanRegistrationForwarded MBeanRegistrationForwarded}
+         * option to the given value.</p>
+         * @param forward the new value.
+         */
+        public void setMBeanRegistrationForwarded(boolean forward) {
+            this.forwardRegistration = forward;
+        }
+
+        // Canonical objects for each of
+        // (MXBean,!MXBean) x (WVisible,!WVisible) x (Forward,!Forward)
         private static final Options[] CANONICALS = {
             new Options(), new Options(), new Options(), new Options(),
+            new Options(), new Options(), new Options(), new Options(),
         };
         static {
             CANONICALS[1].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT);
             CANONICALS[2].setWrappedObjectVisible(true);
             CANONICALS[3].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT);
             CANONICALS[3].setWrappedObjectVisible(true);
+            CANONICALS[4].setMBeanRegistrationForwarded(true);
+            CANONICALS[5].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT);
+            CANONICALS[5].setMBeanRegistrationForwarded(true);
+            CANONICALS[6].setWrappedObjectVisible(true);
+            CANONICALS[6].setMBeanRegistrationForwarded(true);
+            CANONICALS[7].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT);
+            CANONICALS[7].setWrappedObjectVisible(true);
+            CANONICALS[7].setMBeanRegistrationForwarded(true);
         }
         @Override
         MBeanOptions[] canonicals() {
@@ -195,7 +244,8 @@
         @Override
         boolean same(MBeanOptions opts) {
             return (super.same(opts) && opts instanceof Options &&
-                    ((Options) opts).wrappedVisible == wrappedVisible);
+                    ((Options) opts).wrappedVisible == wrappedVisible &&
+                    ((Options) opts).forwardRegistration ==forwardRegistration);
         }
     }
 
@@ -477,7 +527,9 @@
      *
      * @exception IllegalArgumentException if the given
      * <var>implementation</var> is null.
-     *
+     * @exception IllegalStateException if the
+     * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded}
+     * option is true.
      * @exception NotCompliantMBeanException if the given
      * <var>implementation</var> does not implement the
      * Standard MBean (or MXBean) interface that was
@@ -490,6 +542,12 @@
 
         if (implementation == null)
             throw new IllegalArgumentException("implementation is null");
+
+        if(options instanceof Options &&
+                ((Options) options).isMBeanRegistrationForwarded())
+           throw new IllegalStateException("Implementation can't be changed " +
+                   "because MBeanRegistrationForwarded option is true");
+
         setImplementation2(implementation);
     }
 
@@ -689,7 +747,7 @@
                     getImplementationClass().getName());
         }
 
-        MBeanSupport msupport = mbean;
+        MBeanSupport<?> msupport = mbean;
         final MBeanInfo bi = msupport.getMBeanInfo();
         final Object impl = msupport.getWrappedObject();
 
@@ -1058,10 +1116,6 @@
         cachedMBeanInfo = info;
     }
 
-    private boolean isMXBean() {
-        return mbean.isMXBean();
-    }
-
     private static <T> boolean identicalArrays(T[] a, T[] b) {
         if (a == b)
             return true;
@@ -1269,6 +1323,145 @@
         return natts;
     }
 
+    // ------------------------------------------------------------------
+    // Resolve from a type name to a Class.
+    // ------------------------------------------------------------------
+    private static Class<?> resolveClass(MBeanFeatureInfo info, String type,
+            Class<?> mbeanItf)
+            throws ClassNotFoundException {
+        String t = (String) info.getDescriptor().
+                getFieldValue(JMX.ORIGINAL_TYPE_FIELD);
+        if (t == null) {
+            t = type;
+        }
+        Class<?> clazz = MBeanInstantiator.primitiveType(t);
+        if(clazz == null)
+            clazz = Class.forName(t, false, mbeanItf.getClassLoader());
+        return clazz;
+    }
+
+    // ------------------------------------------------------------------
+    // Return the subset of valid Management methods
+    // ------------------------------------------------------------------
+    private static Method getManagementMethod(final Class<?> mbeanType,
+            String opName, Class<?>... parameters) throws NoSuchMethodException,
+            SecurityException {
+        Method m = mbeanType.getMethod(opName, parameters);
+        if (mbeanType.isInterface()) {
+            return m;
+        }
+        final List<Method> methods = new ArrayList<Method>();
+        try {
+            MBeanIntrospector.getAnnotatedMethods(mbeanType, methods);
+        }catch (SecurityException ex) {
+            throw ex;
+        }catch (NoSuchMethodException ex) {
+            throw ex;
+        }catch (Exception ex) {
+            NoSuchMethodException nsme =
+                    new NoSuchMethodException(ex.toString());
+            nsme.initCause(ex);
+            throw nsme;
+        }
+
+        if(methods.contains(m)) return m;
+
+        throw new NoSuchMethodException("Operation " + opName +
+                " not found in management interface " + mbeanType.getName());
+    }
+    /**
+     * Retrieve the set of MBean attribute accessor <code>Method</code>s
+     * located in the <code>mbeanInterface</code> MBean interface that
+     * correspond to the <code>attr</code> <code>MBeanAttributeInfo</code>
+     * parameter.
+     * @param mbeanInterface the management interface.
+     * Can be a standard MBean or MXBean interface, or a Java class
+     * annotated with {@link MBean &#64;MBean} or {@link MXBean &#64;MXBean}.
+     * @param attr The attribute we want the accessors for.
+     * @return The set of accessors.
+     * @throws java.lang.NoSuchMethodException if no accessor exists
+     * for the given {@link MBeanAttributeInfo MBeanAttributeInfo}.
+     * @throws java.lang.IllegalArgumentException if at least one
+     * of the two parameters is null.
+     * @throws java.lang.ClassNotFoundException if the class named in the
+     * attribute type is not found.
+     * @throws java.lang.SecurityException if this exception is
+     * encountered while introspecting the MBean interface.
+     */
+    public static Set<Method> findAttributeAccessors(Class<?> mbeanInterface,
+            MBeanAttributeInfo attr)
+            throws NoSuchMethodException,
+            ClassNotFoundException {
+        if (mbeanInterface == null || attr == null) {
+            throw new IllegalArgumentException("mbeanInterface or attr " +
+                    "parameter is null");
+        }
+        String attributeName = attr.getName();
+        Set<Method> methods = new HashSet<Method>();
+        Class<?> clazz = resolveClass(attr, attr.getType(), mbeanInterface);
+        if (attr.isReadable()) {
+            String radical = "get";
+            if(attr.isIs()) radical = "is";
+            Method getter = getManagementMethod(mbeanInterface, radical +
+                    attributeName);
+            if (getter.getReturnType().equals(clazz)) {
+                methods.add(getter);
+            } else {
+                throw new NoSuchMethodException("Invalid getter return type, " +
+                        "should be " + clazz + ", found " +
+                        getter.getReturnType());
+            }
+        }
+        if (attr.isWritable()) {
+            Method setter = getManagementMethod(mbeanInterface, "set" +
+                    attributeName,
+                    clazz);
+            if (setter.getReturnType().equals(Void.TYPE)) {
+                methods.add(setter);
+            } else {
+                throw new NoSuchMethodException("Invalid setter return type, " +
+                        "should be void, found " + setter.getReturnType());
+            }
+        }
+        return methods;
+    }
+
+    /**
+     * Retrieve the MBean operation <code>Method</code>
+     * located in the <code>mbeanInterface</code> MBean interface that
+     * corresponds to the provided <code>op</code>
+     * <code>MBeanOperationInfo</code> parameter.
+     * @param mbeanInterface the management interface.
+     * Can be a standard MBean or MXBean interface, or a Java class
+     * annotated with {@link MBean &#64;MBean} or {@link MXBean &#64;MXBean}.
+     * @param op The operation we want the method for.
+     * @return the method corresponding to the provided MBeanOperationInfo.
+     * @throws java.lang.NoSuchMethodException if no method exists
+     * for the given {@link MBeanOperationInfo MBeanOperationInfo}.
+     * @throws java.lang.IllegalArgumentException if at least one
+     * of the two parameters is null.
+     * @throws java.lang.ClassNotFoundException if one of the
+     * classes named in the operation signature array is not found.
+     * @throws java.lang.SecurityException if this exception is
+     * encountered while introspecting the MBean interface.
+     */
+    public static Method findOperationMethod(Class<?> mbeanInterface,
+            MBeanOperationInfo op)
+            throws ClassNotFoundException, NoSuchMethodException {
+        if (mbeanInterface == null || op == null) {
+            throw new IllegalArgumentException("mbeanInterface or op " +
+                    "parameter is null");
+        }
+        List<Class<?>> classes = new ArrayList<Class<?>>();
+        for (MBeanParameterInfo info : op.getSignature()) {
+            Class<?> clazz = resolveClass(info, info.getType(), mbeanInterface);
+            classes.add(clazz);
+        }
+        Class<?>[] signature = new Class<?>[classes.size()];
+        classes.toArray(signature);
+        return getManagementMethod(mbeanInterface, op.getName(), signature);
+    }
+
     /**
      * <p>Allows the MBean to perform any operations it needs before
      * being registered in the MBean server.  If the name of the MBean
@@ -1277,10 +1470,14 @@
      * registered in the MBean server.</p>
      *
      * <p>The default implementation of this method returns the {@code name}
-     * parameter.  It does nothing else for
-     * Standard MBeans.  For MXBeans, it records the {@code MBeanServer}
-     * and {@code ObjectName} parameters so they can be used to translate
-     * inter-MXBean references.</p>
+     * parameter. If the
+     * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded}
+     * option is set to true, then this method is forwarded to the object
+     * returned by the {@link #getImplementation getImplementation()} method.
+     * The name returned by this call is then returned by this method.
+     * It does nothing else for Standard MBeans.  For MXBeans, it records
+     * the {@code MBeanServer} and {@code ObjectName} parameters so they can
+     * be used to translate inter-MXBean references.</p>
      *
      * <p>It is good practice for a subclass that overrides this method
      * to call the overridden method via {@code super.preRegister(...)}.
@@ -1315,6 +1512,11 @@
      */
     public ObjectName preRegister(MBeanServer server, ObjectName name)
             throws Exception {
+        // Forward preRegister before to call register and
+        // inject parameters.
+        if(shouldForwardMBeanRegistration())
+            name = ((MBeanRegistration)getImplementation()).
+                    preRegister(server, name);
         mbean.register(server, name);
         MBeanInjector.inject(mbean.getWrappedObject(), server, name);
         return name;
@@ -1324,7 +1526,11 @@
      * <p>Allows the MBean to perform any operations needed after having been
      * registered in the MBean server or after the registration has failed.</p>
      *
-     * <p>The default implementation of this method does nothing for
+     * <p>If the
+     * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded}
+     * option is set to true, then this method is forwarded to the object
+     * returned by the {@link #getImplementation getImplementation()} method.
+     * The default implementation of this method does nothing else for
      * Standard MBeans.  For MXBeans, it undoes any work done by
      * {@link #preRegister preRegister} if registration fails.</p>
      *
@@ -1342,16 +1548,24 @@
     public void postRegister(Boolean registrationDone) {
         if (!registrationDone)
             mbean.unregister();
+        if(shouldForwardMBeanRegistration())
+            ((MBeanRegistration)getImplementation()).
+                    postRegister(registrationDone);
     }
 
     /**
      * <p>Allows the MBean to perform any operations it needs before
      * being unregistered by the MBean server.</p>
      *
-     * <p>The default implementation of this method does nothing.</p>
+     * <p>If the
+     * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded}
+     * option is set to true, then this method is forwarded to the object
+     * returned by the {@link #getImplementation getImplementation()} method.
+     * Other than that, the default implementation of this method does nothing.
+     * </p>
      *
      * <p>It is good practice for a subclass that overrides this method
-     * to call the overridden method via {@code super.preDeegister(...)}.</p>
+     * to call the overridden method via {@code super.preDeregister(...)}.</p>
      *
      * @throws Exception no checked exceptions are throw by this method
      * but {@code Exception} is declared so that subclasses can override
@@ -1360,13 +1574,19 @@
      * @since 1.6
      */
     public void preDeregister() throws Exception {
+        if(shouldForwardMBeanRegistration())
+            ((MBeanRegistration)getImplementation()).preDeregister();
     }
 
     /**
      * <p>Allows the MBean to perform any operations needed after having been
      * unregistered in the MBean server.</p>
      *
-     * <p>The default implementation of this method does nothing for
+     * <p>If the
+     * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded}
+     * option is set to true, then this method is forwarded to the object
+     * returned by the {@link #getImplementation getImplementation()} method.
+     * The default implementation of this method does nothing else for
      * Standard MBeans.  For MXBeans, it removes any information that
      * was recorded by the {@link #preRegister preRegister} method.</p>
      *
@@ -1379,8 +1599,15 @@
      */
     public void postDeregister() {
         mbean.unregister();
+        if(shouldForwardMBeanRegistration())
+            ((MBeanRegistration)getImplementation()).postDeregister();
     }
 
+    private boolean shouldForwardMBeanRegistration() {
+        return (getImplementation() instanceof MBeanRegistration) &&
+           (options instanceof Options &&
+                ((Options) options).isMBeanRegistrationForwarded());
+    }
     //
     // MBeanInfo immutability
     //
@@ -1391,8 +1618,8 @@
      * garbage collected just because we know whether its MBeanInfo
      * is immutable.
      */
-    private static final Map<Class, Boolean> mbeanInfoSafeMap =
-        new WeakHashMap<Class, Boolean>();
+    private static final Map<Class<?>, Boolean> mbeanInfoSafeMap =
+        new WeakHashMap<Class<?>, Boolean>();
 
     /**
      * Return true if {@code subclass} is known to preserve the immutability
@@ -1438,9 +1665,9 @@
     private static class MBeanInfoSafeAction
             implements PrivilegedAction<Boolean> {
 
-        private final Class subclass;
+        private final Class<?> subclass;
 
-        MBeanInfoSafeAction(Class subclass) {
+        MBeanInfoSafeAction(Class<?> subclass) {
             this.subclass = subclass;
         }
 
@@ -1454,26 +1681,26 @@
             // Check for "MBeanInfo getCachedMBeanInfo()" method.
             //
             if (overrides(subclass, StandardMBean.class,
-                          "getCachedMBeanInfo", (Class[]) null))
+                          "getCachedMBeanInfo", (Class<?>[]) null))
                 return false;
 
             // Check for "MBeanInfo getMBeanInfo()" method.
             //
             if (overrides(subclass, StandardMBean.class,
-                          "getMBeanInfo", (Class[]) null))
+                          "getMBeanInfo", (Class<?>[]) null))
                 return false;
 
             // Check for "MBeanNotificationInfo[] getNotificationInfo()"
             // method.
             //
-            // This method is only taken into account for the MBeanInfo
+            // This method is taken into account for the MBeanInfo
             // immutability checks if and only if the given subclass is
             // StandardEmitterMBean itself or can be assigned to
             // StandardEmitterMBean.
             //
             if (StandardEmitterMBean.class.isAssignableFrom(subclass))
                 if (overrides(subclass, StandardEmitterMBean.class,
-                              "getNotificationInfo", (Class[]) null))
+                              "getNotificationInfo", (Class<?>[]) null))
                     return false;
             return true;
         }
--- a/src/share/classes/javax/management/event/EventClient.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/event/EventClient.java	Thu Jan 29 18:33:52 2009 -0800
@@ -29,7 +29,6 @@
 import com.sun.jmx.event.LeaseRenewer;
 import com.sun.jmx.event.ReceiverBuffer;
 import com.sun.jmx.event.RepeatedSingletonJob;
-import com.sun.jmx.namespace.JMXNamespaceUtils;
 import com.sun.jmx.mbeanserver.PerThreadGroupPool;
 import com.sun.jmx.remote.util.ClassLogger;
 
@@ -58,7 +57,6 @@
 import javax.management.NotificationFilter;
 import javax.management.NotificationListener;
 import javax.management.ObjectName;
-import javax.management.remote.JMXConnector;
 import javax.management.remote.NotificationResult;
 import javax.management.remote.TargetedNotification;
 
@@ -117,23 +115,24 @@
     public static final String NONFATAL = "jmx.event.service.nonfatal";
 
     /**
-     * <p>A notification string type used by an {@code EventClient} object to
-     * inform a listener added by {@code #addEventClientListener} that it
-     * has detected that notifications have been lost.  The {@link
-     * Notification#getUserData() userData} of the notification is a Long which
-     * is an upper bound on the number of lost notifications that have just
-     * been detected.</p>
+     * <p>A notification string type used by an {@code EventClient} object
+     * to inform a listener added by {@link #addEventClientListener
+     * addEventClientListener} that it has detected that notifications have
+     * been lost.  The {@link Notification#getUserData() userData} of the
+     * notification is a Long which is an upper bound on the number of lost
+     * notifications that have just been detected.</p>
      *
      * @see #addEventClientListener
      */
     public static final String NOTIFS_LOST = "jmx.event.service.notifs.lost";
 
     /**
-     * The default lease time, {@value}, in milliseconds.
+     * The default lease time that EventClient instances will request, in
+     * milliseconds.  This value is {@value}.
      *
      * @see EventClientDelegateMBean#lease
      */
-    public static final long DEFAULT_LEASE_TIMEOUT = 300000;
+    public static final long DEFAULT_REQUESTED_LEASE_TIME = 300000;
 
     /**
      * <p>Constructs a default {@code EventClient} object.</p>
@@ -173,7 +172,7 @@
      */
     public EventClient(EventClientDelegateMBean delegate)
     throws IOException {
-        this(delegate, null, null, null, DEFAULT_LEASE_TIMEOUT);
+        this(delegate, null, null, null, DEFAULT_REQUESTED_LEASE_TIME);
     }
 
     /**
@@ -188,15 +187,16 @@
      * forwarded by the {@link EventClientDelegateMBean}. If {@code null}, a
      * {@link FetchingEventRelay} object will be used.
      * @param distributingExecutor Used to distribute notifications to local
-     * listeners. If {@code null}, the thread that calls {@link
-     * EventReceiver#receive EventReceiver.receive} from the {@link EventRelay}
-     * object is used.
+     * listeners. Only one job at a time will be submitted to this Executor.
+     * If {@code distributingExecutor} is {@code null}, the thread that calls
+     * {@link EventReceiver#receive EventReceiver.receive} from the {@link
+     * EventRelay} object is used.
      * @param leaseScheduler An object that will be used to schedule the
      * periodic {@linkplain EventClientDelegateMBean#lease lease updates}.
      * If {@code null}, a default scheduler will be used.
      * @param requestedLeaseTime The lease time used to keep this client alive
      * in the {@link EventClientDelegateMBean}.  A value of zero is equivalent
-     * to the {@linkplain #DEFAULT_LEASE_TIMEOUT default value}.
+     * to the {@linkplain #DEFAULT_REQUESTED_LEASE_TIME default value}.
      *
      * @throws IllegalArgumentException If {@code delegate} is null.
      * @throws IOException If an I/O error occurs when communicating with the
@@ -213,7 +213,7 @@
         }
 
         if (requestedLeaseTime == 0)
-            requestedLeaseTime = DEFAULT_LEASE_TIMEOUT;
+            requestedLeaseTime = DEFAULT_REQUESTED_LEASE_TIME;
         else if (requestedLeaseTime < 0) {
             throw new IllegalArgumentException(
                     "Negative lease time: " + requestedLeaseTime);
@@ -265,16 +265,43 @@
             public ScheduledThreadPoolExecutor createThreadPool(ThreadGroup group) {
                 ThreadFactory daemonThreadFactory = new DaemonThreadFactory(
                         "JMX EventClient lease renewer %d");
-                ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(
-                        20, daemonThreadFactory);
-                exec.setKeepAliveTime(1, TimeUnit.SECONDS);
-                exec.allowCoreThreadTimeOut(true);
-                exec.setRemoveOnCancelPolicy(true);
-                return exec;
+                ScheduledThreadPoolExecutor executor =
+                        new ScheduledThreadPoolExecutor(20, daemonThreadFactory);
+                executor.setKeepAliveTime(1, TimeUnit.SECONDS);
+                executor.allowCoreThreadTimeOut(true);
+                if (setRemoveOnCancelPolicy != null) {
+                    try {
+                        setRemoveOnCancelPolicy.invoke(executor, true);
+                    } catch (Exception e) {
+                        logger.trace("setRemoveOnCancelPolicy", e);
+                    }
+                }
+                // By default, a ScheduledThreadPoolExecutor will keep jobs
+                // in its queue even after they have been cancelled.  They
+                // will only be removed when their scheduled time arrives.
+                // Since the job references the LeaseRenewer which references
+                // this EventClient, this can lead to a moderately large number
+                // of objects remaining referenced until the renewal time
+                // arrives.  Hence the above call, which removes the job from
+                // the queue as soon as it is cancelled.  Since the call is
+                // new with JDK 7, we invoke it via reflection to make it
+                // easier to use this code on JDK 6.
+                return executor;
             }
         };
         return leaseRenewerThreadPool.getThreadPoolExecutor(create);
+    }
 
+    private static final Method setRemoveOnCancelPolicy;
+    static {
+        Method m;
+        try {
+            m = ScheduledThreadPoolExecutor.class.getMethod(
+                    "setRemoveOnCancelPolicy", boolean.class);
+        } catch (Exception e) {
+            m = null;
+        }
+        setRemoveOnCancelPolicy = m;
     }
 
     /**
@@ -381,7 +408,7 @@
             listenerId =
                     eventClientDelegate.addListener(clientId, name, filter);
         } catch (EventClientNotFoundException ecnfe) {
-            final IOException ioe = new IOException();
+            final IOException ioe = new IOException(ecnfe.getMessage());
             ioe.initCause(ecnfe);
             throw ioe;
         }
@@ -488,7 +515,7 @@
             listenerId =
                     eventClientDelegate.addSubscriber(clientId, name, filter);
         } catch (EventClientNotFoundException ecnfe) {
-            final IOException ioe = new IOException();
+            final IOException ioe = new IOException(ecnfe.getMessage());
             ioe.initCause(ecnfe);
             throw ioe;
         }
@@ -519,7 +546,7 @@
      *
      * <P>The method returns the listeners which were added successfully. The
      * elements in the returned collection are a subset of the elements in
-     * {@code infoList}. If all listeners were added successfully, the two
+     * {@code listeners}. If all listeners were added successfully, the two
      * collections are the same. If no listener was added successfully, the
      * returned collection is empty.</p>
      *
@@ -569,8 +596,13 @@
     }
 
     /**
-     * Returns the set of listeners that have been added through
-     * this {@code EventClient} and not subsequently removed.
+     * <p>Returns the collection of listeners that have been added through
+     * this {@code EventClient} and not subsequently removed.  The returned
+     * collection contains one entry for every listener added with
+     * {@link #addNotificationListener addNotificationListener} or
+     * {@link #subscribe subscribe} and not subsequently removed with
+     * {@link #removeNotificationListener removeNotificationListener} or
+     * {@link #unsubscribe unsubscribe}, respectively.</p>
      *
      * @return A collection of listener information. Empty if there are no
      * current listeners or if this {@code EventClient} has been {@linkplain
@@ -919,8 +951,10 @@
     private final static MBeanNotificationInfo[] myInfo =
             new MBeanNotificationInfo[] {
         new MBeanNotificationInfo(
-                new String[] {FAILED, NOTIFS_LOST},
-                Notification.class.getName(), "")};
+                new String[] {FAILED, NONFATAL, NOTIFS_LOST},
+                Notification.class.getName(),
+                "Notifications that can be sent to a listener added with " +
+                "EventClient.addEventClientListener")};
 
     private final NotificationBroadcasterSupport broadcaster =
             new NotificationBroadcasterSupport();
@@ -1027,7 +1061,7 @@
             final public EventClient call() throws Exception {
                 EventClientDelegateMBean ecd = EventClientDelegate.getProxy(conn);
                 return new EventClient(ecd, eventRelay, null, null,
-                        DEFAULT_LEASE_TIMEOUT);
+                        DEFAULT_REQUESTED_LEASE_TIME);
             }
         };
 
@@ -1065,24 +1099,6 @@
         return clientId;
     }
 
-    /**
-     * Returns a JMX Connector that will use an {@link EventClient}
-     * to subscribe for notifications. If the server doesn't have
-     * an {@link EventClientDelegateMBean}, then the connector will
-     * use the legacy notification mechanism instead.
-     *
-     * @param wrapped The underlying JMX Connector wrapped by the returned
-     *               connector.
-     *
-     * @return A JMX Connector that will uses an {@link EventClient}, if
-     *         available.
-     *
-     * @see EventClient#getEventClientConnection(MBeanServerConnection)
-     */
-    public static JMXConnector withEventClient(final JMXConnector wrapped) {
-        return JMXNamespaceUtils.withEventClient(wrapped);
-    }
-
     private static final PerThreadGroupPool<ScheduledThreadPoolExecutor>
             leaseRenewerThreadPool = PerThreadGroupPool.make();
 }
--- a/src/share/classes/javax/management/event/EventClientDelegate.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/event/EventClientDelegate.java	Thu Jan 29 18:33:52 2009 -0800
@@ -104,8 +104,8 @@
     public static EventClientDelegate getEventClientDelegate(MBeanServer server) {
         EventClientDelegate delegate = null;
         synchronized(delegateMap) {
-            final WeakReference wrf = delegateMap.get(server);
-            delegate = (wrf == null) ? null : (EventClientDelegate)wrf.get();
+            final WeakReference<EventClientDelegate> wrf = delegateMap.get(server);
+            delegate = (wrf == null) ? null : wrf.get();
 
             if (delegate == null) {
                 delegate = new EventClientDelegate(server);
@@ -149,6 +149,7 @@
     // of a setMBeanServer on some other forwarder later in the chain.
 
     private static class Forwarder extends SingleMBeanForwarder {
+        private MBeanServer loopMBS;
 
         private static class UnsupportedInvocationHandler
                 implements InvocationHandler {
@@ -173,7 +174,11 @@
         private volatile boolean madeECD;
 
         Forwarder() {
-            super(OBJECT_NAME, makeUnsupportedECD());
+            super(OBJECT_NAME, makeUnsupportedECD(), true);
+        }
+
+        synchronized void setLoopMBS(MBeanServer loopMBS) {
+            this.loopMBS = loopMBS;
         }
 
         @Override
@@ -186,7 +191,7 @@
                         AccessController.doPrivileged(
                             new PrivilegedAction<EventClientDelegate>() {
                                 public EventClientDelegate run() {
-                                    return getEventClientDelegate(Forwarder.this);
+                                    return getEventClientDelegate(loopMBS);
                                 }
                             });
                     DynamicMBean mbean = new StandardMBean(
@@ -208,11 +213,46 @@
      * that are targeted for that MBean and handles them itself.  All other
      * requests are forwarded to the next element in the forwarder chain.</p>
      *
+     * @param nextMBS the next {@code MBeanServer} in the chain of forwarders,
+     * which might be another {@code MBeanServerForwarder} or a plain {@code
+     * MBeanServer}.  This is the object to which {@code MBeanServer} requests
+     * that do not concern the {@code EventClientDelegateMBean} are sent.
+     * It will be the value of {@link MBeanServerForwarder#getMBeanServer()
+     * getMBeanServer()} on the returned object, and can be changed with {@link
+     * MBeanServerForwarder#setMBeanServer setMBeanServer}.  It can be null but
+     * must be set to a non-null value before any {@code MBeanServer} requests
+     * arrive.
+     *
+     * @param loopMBS the {@code MBeanServer} to which requests from the
+     * {@code EventClientDelegateMBean} should be sent.  For example,
+     * when you invoke the {@link EventClientDelegateMBean#addListener
+     * addListener} operation on the {@code EventClientDelegateMBean}, it will
+     * result in a call to {@link
+     * MBeanServer#addNotificationListener(ObjectName, NotificationListener,
+     * NotificationFilter, Object) addNotificationListener} on this object.
+     * If this parameter is null, then these requests will be sent to the
+     * newly-created {@code MBeanServerForwarder}.  Usually the parameter will
+     * either be null or will be the result of {@link
+     * javax.management.remote.JMXConnectorServer#getSystemMBeanServerForwarder()
+     * getSystemMBeanServerForwarder()} for the connector server in which
+     * this forwarder will be installed.
+     *
      * @return a new {@code MBeanServerForwarder} that simulates the existence
      * of an {@code EventClientDelegateMBean}.
+     *
+     * @see javax.management.remote.JMXConnectorServer#installStandardForwarders
      */
-    public static MBeanServerForwarder newForwarder() {
-        return new Forwarder();
+    public static MBeanServerForwarder newForwarder(
+            MBeanServer nextMBS, MBeanServer loopMBS) {
+        Forwarder mbsf = new Forwarder();
+        // We must setLoopMBS before setMBeanServer, because when we
+        // setMBeanServer that will call getEventClientDelegate(loopMBS).
+        if (loopMBS == null)
+            loopMBS = mbsf;
+        mbsf.setLoopMBS(loopMBS);
+        if (nextMBS != null)
+            mbsf.setMBeanServer(nextMBS);
+        return mbsf;
     }
 
     /**
@@ -282,7 +322,7 @@
             Constructor<?> foundCons = null;
             if (sig == null)
                 sig = new String[0];
-            for (Constructor cons : c.getConstructors()) {
+            for (Constructor<?> cons : c.getConstructors()) {
                 Class<?>[] types = cons.getParameterTypes();
                 String[] consSig = new String[types.length];
                 for (int i = 0; i < types.length; i++)
@@ -437,10 +477,9 @@
     // private classes
     // ------------------------------------
     private class ClientInfo {
-        String clientId;
-        EventBuffer buffer;
-        NotificationListener clientListener;
-        Map<Integer, AddedListener> listenerInfoMap =
+        final String clientId;
+        final NotificationListener clientListener;
+        final Map<Integer, AddedListener> listenerInfoMap =
                 new HashMap<Integer, AddedListener>();
 
         ClientInfo(String clientId, EventForwarder forwarder) {
@@ -703,7 +742,8 @@
         clientInfo = clientInfoMap.get(clientId);
 
         if (clientInfo == null) {
-            throw new EventClientNotFoundException("The client is not found.");
+            throw new EventClientNotFoundException(
+                    "Client not found (id " + clientId + ")");
         }
 
         return clientInfo;
--- a/src/share/classes/javax/management/event/EventClientDelegateMBean.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/event/EventClientDelegateMBean.java	Thu Jan 29 18:33:52 2009 -0800
@@ -51,7 +51,8 @@
  * and the MBean Server, that will intercept accesses to the Event Client
  * Delegate MBean and treat them as the real MBean would. This forwarder is
  * inserted by default with the standard RMI Connector Server, and can also
- * be created explicitly using {@link EventClientDelegate#newForwarder()}.
+ * be created explicitly using {@link EventClientDelegate#newForwarder
+ * EventClientDelegate.newForwarder}.
  *
  * <li><p>A variant on the above is to replace the MBean Server that is
  * used locally with a forwarder as described above.  Since
@@ -61,9 +62,7 @@
  *
  * <pre>
  * MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();  // or whatever
- * MBeanServerForwarder mbsf = EventClientDelegate.newForwarder();
- * mbsf.setMBeanServer(mbs);
- * mbs = mbsf;
+ * mbs = EventClientDelegate.newForwarder(mbs, null);
  * // now use mbs just as you did before, but it will have an EventClientDelegate
  * </pre>
  *
--- a/src/share/classes/javax/management/event/EventRelay.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/event/EventRelay.java	Thu Jan 29 18:33:52 2009 -0800
@@ -27,7 +27,6 @@
 
 import java.io.IOException;
 import java.util.concurrent.Executors;  // for javadoc
-import java.util.concurrent.ScheduledFuture;
 
 /**
  * This interface is used to specify a way to receive
--- a/src/share/classes/javax/management/event/EventSubscriber.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/event/EventSubscriber.java	Thu Jan 29 18:33:52 2009 -0800
@@ -350,8 +350,7 @@
     static {
         QueryExp broadcasterExp;
         try {
-            final Method m = Query.class.getMethod("isInstanceOf",
-                    new Class[] {String.class});
+            final Method m = Query.class.getMethod("isInstanceOf", String.class);
             broadcasterExp = (QueryExp)m.invoke(Query.class,
                     new Object[] {NotificationBroadcaster.class.getName()});
         } catch (Exception e) {
--- a/src/share/classes/javax/management/event/FetchingEventRelay.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/event/FetchingEventRelay.java	Thu Jan 29 18:33:52 2009 -0800
@@ -39,10 +39,18 @@
 import javax.management.remote.NotificationResult;
 
 /**
- * This class is an implementation of the {@link EventRelay} interface. It calls
+ * <p>This class is an implementation of the {@link EventRelay} interface. It calls
  * {@link EventClientDelegateMBean#fetchNotifications
  * fetchNotifications(String, long, int, long)} to get
- * notifications and then forwards them to an {@link EventReceiver} object.
+ * notifications and then forwards them to an {@link EventReceiver} object.</p>
+ *
+ * <p>A {@code fetchExecutor} parameter can be specified when creating a
+ * {@code FetchingEventRelay}.  That is then the {@code Executor} that will
+ * be used to perform the {@code fetchNotifications} operation.  Only one
+ * job at a time will be submitted to this {@code Executor}.  The behavior
+ * is unspecified if {@link Executor#execute} throws an exception, including
+ * {@link java.util.concurrent.RejectedExecutionException
+ * RejectedExecutionException}.
  *
  * @since JMX 2.0
  */
@@ -91,7 +99,7 @@
      * the fetching.
      *
      * @param delegate The {@code EventClientDelegateMBean} to work with.
-     * @param executor Used to do the fetching. A new thread is created if
+     * @param fetchExecutor Used to do the fetching. A new thread is created if
      * {@code null}.
      * @throws IOException If failed to work with the {@code delegate}.
      * @throws MBeanException if unable to add a client to the remote
@@ -101,12 +109,12 @@
      * @throws IllegalArgumentException If {@code delegate} is {@code null}.
      */
     public FetchingEventRelay(EventClientDelegateMBean delegate,
-            Executor executor) throws IOException, MBeanException {
+            Executor fetchExecutor) throws IOException, MBeanException {
         this(delegate,
                 DEFAULT_BUFFER_SIZE,
                 DEFAULT_WAITING_TIMEOUT,
                 DEFAULT_MAX_NOTIFICATIONS,
-                executor);
+                fetchExecutor);
     }
 
     /**
@@ -120,7 +128,7 @@
      * @param timeout The waiting time in millseconds when fetching
      * notifications from an {@code EventClientDelegateMBean}.
      * @param maxNotifs The maximum notifications to fetch every time.
-     * @param executor Used to do the fetching. A new thread is created if
+     * @param fetchExecutor Used to do the fetching. A new thread is created if
      * {@code null}.
      * @throws IOException if failed to communicate with the {@code delegate}.
      * @throws MBeanException if unable to add a client to the remote
@@ -133,12 +141,12 @@
             int bufferSize,
             long timeout,
             int maxNotifs,
-            Executor executor) throws IOException, MBeanException {
+            Executor fetchExecutor) throws IOException, MBeanException {
         this(delegate,
                 bufferSize,
                 timeout,
                 maxNotifs,
-                executor,
+                fetchExecutor,
                 FetchingEventForwarder.class.getName(),
                 new Object[] {bufferSize},
                 new String[] {int.class.getName()});
@@ -155,7 +163,7 @@
      * @param timeout The waiting time in millseconds when fetching
      * notifications from an {@code EventClientDelegateMBean}.
      * @param maxNotifs The maximum notifications to fetch every time.
-     * @param executor Used to do the fetching.
+     * @param fetchExecutor Used to do the fetching.
      * @param forwarderName the class name of a user specific EventForwarder
      * to create in server to forward notifications to this object. The class
      * should be a subclass of the class {@link FetchingEventForwarder}.
@@ -174,7 +182,7 @@
             int bufferSize,
             long timeout,
             int maxNotifs,
-            Executor executor,
+            Executor fetchExecutor,
             String forwarderName,
             Object[] params,
             String[] sig) throws IOException, MBeanException {
@@ -184,11 +192,11 @@
                     bufferSize+" "+
                     timeout+" "+
                     maxNotifs+" "+
-                    executor+" "+
+                    fetchExecutor+" "+
                     forwarderName+" ");
         }
 
-        if(delegate == null) {
+        if (delegate == null) {
             throw new NullPointerException("Null EventClientDelegateMBean!");
         }
 
@@ -212,16 +220,16 @@
         this.timeout = timeout;
         this.maxNotifs = maxNotifs;
 
-        if (executor == null) {
-            ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1,
-                    daemonThreadFactory);
-            stpe.setKeepAliveTime(1, TimeUnit.SECONDS);
-            stpe.allowCoreThreadTimeOut(true);
-            executor = stpe;
-            this.defaultExecutor = stpe;
+        if (fetchExecutor == null) {
+            ScheduledThreadPoolExecutor executor =
+                    new ScheduledThreadPoolExecutor(1, daemonThreadFactory);
+            executor.setKeepAliveTime(1, TimeUnit.SECONDS);
+            executor.allowCoreThreadTimeOut(true);
+            fetchExecutor = executor;
+            this.defaultExecutor = executor;
         } else
             this.defaultExecutor = null;
-        this.executor = executor;
+        this.fetchExecutor = fetchExecutor;
 
         startSequenceNumber = 0;
         fetchingJob = new MyJob();
@@ -258,7 +266,7 @@
 
     private class MyJob extends RepeatedSingletonJob {
         public MyJob() {
-            super(executor);
+            super(fetchExecutor);
         }
 
         public boolean isSuspended() {
@@ -368,7 +376,7 @@
     private String clientId;
     private boolean stopped = false;
 
-    private final Executor executor;
+    private final Executor fetchExecutor;
     private final ExecutorService defaultExecutor;
     private final MyJob fetchingJob;
 
--- a/src/share/classes/javax/management/event/package-info.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/event/package-info.java	Thu Jan 29 18:33:52 2009 -0800
@@ -83,8 +83,8 @@
  * javax.management.event.EventClientDelegateMBean EventClientDelegateMBean}
  * must be registered in the MBean Server, or the connector server must
  * be configured to simulate the existence of this MBean, for example
- * using {@link javax.management.event.EventClientDelegate#newForwarder()
- * EventClientDelegate.newForwarder()}. The standard RMI connector is so
+ * using {@link javax.management.event.EventClientDelegate#newForwarder
+ * EventClientDelegate.newForwarder}. The standard RMI connector is so
  * configured by default. The {@code EventClientDelegateMBean} documentation
  * has further details.</p>
  *
--- a/src/share/classes/javax/management/loading/DefaultLoaderRepository.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/loading/DefaultLoaderRepository.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -69,7 +69,7 @@
      * @exception ClassNotFoundException The specified class could not be
      *            found.
      */
-    public static Class loadClass(String className)
+    public static Class<?> loadClass(String className)
         throws ClassNotFoundException {
         MBEANSERVER_LOGGER.logp(Level.FINEST,
                 DefaultLoaderRepository.class.getName(),
@@ -93,7 +93,7 @@
      * @exception ClassNotFoundException The specified class could not be
      *    found.
      */
-    public static Class loadClassWithout(ClassLoader loader,
+    public static Class<?> loadClassWithout(ClassLoader loader,
                                          String className)
         throws ClassNotFoundException {
         MBEANSERVER_LOGGER.logp(Level.FINEST,
@@ -102,12 +102,11 @@
         return load(loader, className);
     }
 
-    private static Class load(ClassLoader without, String className)
+    private static Class<?> load(ClassLoader without, String className)
             throws ClassNotFoundException {
-        final List mbsList = MBeanServerFactory.findMBeanServer(null);
+        final List<MBeanServer> mbsList = MBeanServerFactory.findMBeanServer(null);
 
-        for (Iterator it = mbsList.iterator(); it.hasNext(); ) {
-            MBeanServer mbs = (MBeanServer) it.next();
+        for (MBeanServer mbs : mbsList) {
             ClassLoaderRepository clr = mbs.getClassLoaderRepository();
             try {
                 return clr.loadClassWithout(without, className);
--- a/src/share/classes/javax/management/loading/MLet.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/loading/MLet.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1165,9 +1165,10 @@
                      file.deleteOnExit();
                      FileOutputStream fileOutput = new FileOutputStream(file);
                      try {
-                         int c;
-                         while ((c = is.read()) != -1) {
-                             fileOutput.write(c);
+                         byte[] buf = new byte[4096];
+                         int n;
+                         while ((n = is.read(buf)) >= 0) {
+                            fileOutput.write(buf, 0, n);
                          }
                      } finally {
                          fileOutput.close();
@@ -1291,7 +1292,7 @@
          if (c != null) {
             try {
                 Constructor<?> cons =
-                    c.getConstructor(new Class[] {String.class});
+                    c.getConstructor(String.class);
                 Object[] oo = new Object[1];
                 oo[0]=param;
                 return(cons.newInstance(oo));
--- a/src/share/classes/javax/management/loading/MLetObjectInputStream.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/loading/MLetObjectInputStream.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
@@ -55,30 +55,30 @@
         this.loader = loader;
     }
 
-    private Class primitiveType(char c) {
+    private Class<?> primitiveType(char c) {
         switch(c) {
-        case 66: /* 'B' */
+        case 'B':
             return Byte.TYPE;
 
-        case 67: /* 'C' */
+        case 'C':
             return Character.TYPE;
 
-        case 68: /* 'D' */
+        case 'D':
             return Double.TYPE;
 
-        case 70: /* 'F' */
+        case 'F':
             return Float.TYPE;
 
-        case 73: /* 'I' */
+        case 'I':
             return Integer.TYPE;
 
-        case 74: /* 'J' */
+        case 'J':
             return Long.TYPE;
 
-        case 83: /* 'S' */
+        case 'S':
             return Short.TYPE;
 
-        case 90: /* 'Z' */
+        case 'Z':
             return Boolean.TYPE;
         }
         return null;
@@ -87,14 +87,15 @@
     /**
      * Use the given ClassLoader rather than using the system class
      */
-    protected Class resolveClass(ObjectStreamClass objectstreamclass)
+    @Override
+    protected Class<?> resolveClass(ObjectStreamClass objectstreamclass)
         throws IOException, ClassNotFoundException {
 
         String s = objectstreamclass.getName();
         if (s.startsWith("[")) {
             int i;
             for (i = 1; s.charAt(i) == '['; i++);
-            Class class1;
+            Class<?> class1;
             if (s.charAt(i) == 'L') {
                 class1 = loader.loadClass(s.substring(i + 1, s.length() - 1));
             } else {
--- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -229,9 +229,10 @@
             init(inDescr.descriptorMap);
     }
 
-
     /**
-     * <p>Descriptor constructor taking an XML String.</p>
+     * <p>Descriptor constructor taking an XML String or a
+     * <i>fieldName=fieldValue</i> format String. The String parameter is
+     * parsed as XML if it begins with a '<' character.</p>
      *
      * <p>The format of the XML string is not defined, but an
      * implementation must ensure that the string returned by
@@ -244,17 +245,20 @@
      * programmer will have to reset or convert these fields
      * correctly.</p>
      *
-     * @param inStr An XML-formatted string used to populate this
-     * Descriptor.  The format is not defined, but any
+     * @param inStr An XML-format or a fieldName=fieldValue formatted string
+     * used to populate this Descriptor.  The XML format is not defined, but any
      * implementation must ensure that the string returned by
      * method {@link #toXMLString toXMLString} on an existing
      * descriptor can be used to instantiate an equivalent
      * descriptor when instantiated using this constructor.
      *
-     * @exception RuntimeOperationsException If the String inStr
-     * passed in parameter is null
+     * @exception RuntimeOperationsException If the String inStr passed in
+     * parameter is null or, when it is not an XML string, if the field name or
+     * field value is illegal. If inStr is not an XML string then it must
+     * contain an "=". "fieldValue", "fieldName", and "fieldValue" are illegal.
+     * FieldName cannot be empty. "fieldName=" will cause the value to be empty.
      * @exception XMLParseException XML parsing problem while parsing
-     * the input String
+     * the XML-format input String
      * @exception MBeanException Wraps a distributed communication Exception.
      */
     /* At some stage we should rewrite this code to be cleverer.  Using
@@ -283,14 +287,27 @@
             throw new RuntimeOperationsException(iae, msg);
         }
 
+        // parse parameter string into structures
+
+        init(null);
+
+        if(!inStr.startsWith("<")) {
+            parseNamesValues(inStr);
+            if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
+                MODELMBEAN_LOGGER.logp(Level.FINEST,
+                    DescriptorSupport.class.getName(),
+                    "Descriptor(name=value)", "Exit");
+            }
+            return;
+        }
+
         final String lowerInStr = inStr.toLowerCase();
         if (!lowerInStr.startsWith("<descriptor>")
             || !lowerInStr.endsWith("</descriptor>")) {
             throw new XMLParseException("No <descriptor>, </descriptor> pair");
         }
 
-        // parse xmlstring into structures
-        init(null);
+
         // create dummy descriptor: should have same size
         // as number of fields in xmlstring
         // loop through structures and put them in descriptor
@@ -454,6 +471,16 @@
 
         init(null);
 
+        parseNamesValues(fields);
+
+        if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
+            MODELMBEAN_LOGGER.logp(Level.FINEST,
+                    DescriptorSupport.class.getName(),
+                    "Descriptor(String... fields)", "Exit");
+        }
+    }
+
+    private void parseNamesValues(String... fields) {
         for (int i=0; i < fields.length; i++) {
             if ((fields[i] == null) || (fields[i].equals(""))) {
                 continue;
@@ -495,11 +522,6 @@
 
             setField(fieldName,fieldValue);
         }
-        if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
-            MODELMBEAN_LOGGER.logp(Level.FINEST,
-                    DescriptorSupport.class.getName(),
-                    "Descriptor(String... fields)", "Exit");
-        }
     }
 
     private void init(Map<String, ?> initMap) {
@@ -589,7 +611,7 @@
         int numberOfEntries = descriptorMap.size();
 
         String[] responseFields = new String[numberOfEntries];
-        Set returnedSet = descriptorMap.entrySet();
+        Set<Map.Entry<String, Object>> returnedSet = descriptorMap.entrySet();
 
         int i = 0;
 
@@ -598,8 +620,9 @@
                     DescriptorSupport.class.getName(),
                     "getFields()", "Returning " + numberOfEntries + " fields");
         }
-        for (Iterator iter = returnedSet.iterator(); iter.hasNext(); i++) {
-            Map.Entry currElement = (Map.Entry) iter.next();
+        for (Iterator<Map.Entry<String, Object>> iter = returnedSet.iterator();
+             iter.hasNext(); i++) {
+            Map.Entry<String, Object> currElement = iter.next();
 
             if (currElement == null) {
                 if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
@@ -642,7 +665,7 @@
         int numberOfEntries = descriptorMap.size();
 
         String[] responseFields = new String[numberOfEntries];
-        Set returnedSet = descriptorMap.entrySet();
+        Set<Map.Entry<String, Object>> returnedSet = descriptorMap.entrySet();
 
         int i = 0;
 
@@ -653,8 +676,9 @@
                     "Returning " + numberOfEntries + " fields");
         }
 
-        for (Iterator iter = returnedSet.iterator(); iter.hasNext(); i++) {
-            Map.Entry currElement = (Map.Entry) iter.next();
+        for (Iterator<Map.Entry<String, Object>> iter = returnedSet.iterator();
+             iter.hasNext(); i++) {
+            Map.Entry<String, Object> currElement = iter.next();
 
             if (( currElement == null ) || (currElement.getKey() == null)) {
                 if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
@@ -700,9 +724,8 @@
         }
 
         if (fieldNames == null) {
-            for (Iterator iter = descriptorMap.values().iterator();
-                 iter.hasNext(); i++)
-                responseFields[i] = iter.next();
+            for (Object value : descriptorMap.values())
+                responseFields[i++] = value;
         } else {
             for (i=0; i < fieldNames.length; i++) {
                 if ((fieldNames[i] == null) || (fieldNames[i].equals(""))) {
@@ -883,9 +906,9 @@
      * not a String with value "t", "f", "true", "false". These String
      * values must not be case sensitive.
      * <LI> visibility fieldName, if defined, is null, or not a
-     * Numeric String or a not Numeric Value >= 1 and <= 4
+     * Numeric String or a not Numeric Value >= 1 and &lt;= 4
      * <LI> severity fieldName, if defined, is null, or not a Numeric
-     * String or not a Numeric Value >= 0 and <= 6<br>
+     * String or not a Numeric Value >= 0 and &lt;= 6<br>
      * <LI> persistPolicy fieldName, if defined, is null, or not one of
      * the following strings:<br>
      *   "OnUpdate", "OnTimer", "NoMoreOftenThan", "OnUnregister", "Always",
@@ -904,7 +927,7 @@
         }
         // verify that the descriptor is valid, by iterating over each field...
 
-        Set returnedSet = descriptorMap.entrySet();
+        Set<Map.Entry<String, Object>> returnedSet = descriptorMap.entrySet();
 
         if (returnedSet == null) {   // null descriptor, not valid
             if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
@@ -925,9 +948,7 @@
 
         // According to the descriptor type we validate the fields contained
 
-        for (Iterator iter = returnedSet.iterator(); iter.hasNext();) {
-            Map.Entry currElement = (Map.Entry) iter.next();
-
+        for (Map.Entry<String, Object> currElement : returnedSet) {
             if (currElement != null) {
                 if (currElement.getValue() != null) {
                     // validate the field valued...
@@ -1083,10 +1104,9 @@
      */
     public synchronized String toXMLString() {
         final StringBuilder buf = new StringBuilder("<Descriptor>");
-        Set returnedSet = descriptorMap.entrySet();
-        for (Iterator iter = returnedSet.iterator(); iter.hasNext(); ) {
-            final Map.Entry currElement = (Map.Entry) iter.next();
-            final String name = currElement.getKey().toString();
+        Set<Map.Entry<String, Object>> returnedSet = descriptorMap.entrySet();
+        for (Map.Entry<String, Object> currElement : returnedSet) {
+            final String name = currElement.getKey();
             Object value = currElement.getValue();
             String valueString = null;
             /* Set valueString to non-null if and only if this is a string that
@@ -1256,7 +1276,7 @@
             }
             final Class<?> c =
                 Class.forName(className, false, contextClassLoader);
-            constr = c.getConstructor(new Class[] {String.class});
+            constr = c.getConstructor(new Class<?>[] {String.class});
         } catch (Exception e) {
             throw new XMLParseException(e,
                                         "Cannot parse value: <" + s + ">");
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -39,7 +39,6 @@
 import java.io.ObjectStreamField;
 import java.lang.reflect.Method;
 import java.security.AccessController;
-import java.security.PrivilegedAction;
 import java.util.logging.Level;
 
 import javax.management.Descriptor;
@@ -49,32 +48,56 @@
 import javax.management.RuntimeOperationsException;
 
 /**
- * The ModelMBeanAttributeInfo object describes an attribute of the ModelMBean.
+ * <p>The ModelMBeanAttributeInfo object describes an attribute of the ModelMBean.
  * It is a subclass of MBeanAttributeInfo with the addition of an associated Descriptor
- * and an implementation of the DescriptorAccess interface.
- * <P>
- * The fields in the descriptor are defined, but not limited to, the following: <P>
- * <PRE>
- * name           : attribute name
- * descriptorType : must be "attribute"
- * value          : current value for attribute
- * default        : default value for attribute
- * displayName    : name of attribute to be used in displays
- * getMethod      : name of operation descriptor for get method
- * setMethod      : name of operation descriptor for set method
- * protocolMap    : object which implements the Descriptor interface: mappings
- *                  must be appropriate for the attribute
- *                  and entries can be updated or augmented at runtime.
- * persistPolicy  : OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never
- * persistPeriod  : seconds - frequency of persist cycle. Used when persistPolicy
- *                  is "OnTimer" or "NoMoreOftenThan".
- * currencyTimeLimit : how long value is valid, &lt;0 never, =0 always, &gt;0 seconds
- * lastUpdatedTimeStamp : when value was set
- * visibility     : 1-4 where 1: always visible, 4: rarely visible
- * presentationString : xml formatted string to allow presentation of data
- * </PRE>
- * The default descriptor contains the name, descriptorType and displayName fields.
- * The default value of the name and displayName fields is the name of the attribute.
+ * and an implementation of the DescriptorAccess interface.</p>
+ *
+ * <P id="descriptor">
+ * The fields in the descriptor are defined, but not limited to, the following.
+ * Note that when the Type in this table is Number, a String that is the decimal
+ * representation of a Long can also be used.</P>
+ *
+ * <table border="1" cellpadding="5">
+ * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
+ * <tr><td>name</td><td>String</td>
+ *     <td>Attribute name.</td></tr>
+ * <tr><td>descriptorType</td><td>String</td>
+ *     <td>Must be "attribute".</td></tr>
+ * <tr id="value-field"><td>value</td><td>Object</td>
+ *     <td>Current (cached) value for attribute.</td></tr>
+ * <tr><td>default</td><td>Object</td>
+ *     <td>Default value for attribute.</td></tr>
+ * <tr><td>displayName</td><td>String</td>
+ *     <td>Name of attribute to be used in displays.</td></tr>
+ * <tr><td>getMethod</td><td>String</td>
+ *     <td>Name of operation descriptor for get method.</td></tr>
+ * <tr><td>setMethod</td><td>String</td>
+ *     <td>Name of operation descriptor for set method.</td></tr>
+ * <tr><td>protocolMap</td><td>Descriptor</td>
+ *     <td>See the section "Protocol Map Support" in the JMX specification
+ *         document.  Mappings must be appropriate for the attribute and entries
+ *         can be updated or augmented at runtime.</td></tr>
+ * <tr><td>persistPolicy</td><td>String</td>
+ *     <td>One of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never.
+ *         See the section "MBean Descriptor Fields" in the JMX specification
+ *         document.</td></tr>
+ * <tr><td>persistPeriod</td><td>Number</td>
+ *     <td>Frequency of persist cycle in seconds. Used when persistPolicy is
+ *         "OnTimer" or "NoMoreOftenThan".</td></tr>
+ * <tr><td>currencyTimeLimit</td><td>Number</td>
+ *     <td>How long <a href="#value=field">value</a> is valid: &lt;0 never,
+ *         =0 always, &gt;0 seconds.</td></tr>
+ * <tr><td>lastUpdatedTimeStamp</td><td>Number</td>
+ *     <td>When <a href="#value-field">value</a> was set.</td></tr>
+ * <tr><td>visibility</td><td>Number</td>
+ *     <td>1-4 where 1: always visible, 4: rarely visible.</td></tr>
+ * <tr><td>presentationString</td><td>String</td>
+ *     <td>XML formatted string to allow presentation of data.</td></tr>
+ * </table>
+ *
+ * <p>The default descriptor contains the name, descriptorType and displayName
+ * fields.  The default value of the name and displayName fields is the name of
+ * the attribute.</p>
  *
  * <p><b>Note:</b> because of inconsistencies in previous versions of
  * this specification, it is recommended not to use negative or zero
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -49,22 +49,33 @@
 import javax.management.RuntimeOperationsException;
 
 /**
- * The ModelMBeanConstructorInfo object describes a constructor of the ModelMBean.
+ * <p>The ModelMBeanConstructorInfo object describes a constructor of the ModelMBean.
  * It is a subclass of MBeanConstructorInfo with the addition of an associated Descriptor
- * and an implementation of the DescriptorAccess interface.
- * <P>
- * <PRE>
- * The fields in the descriptor are defined, but not limited to, the following: <P>
- * name           : constructor name
- * descriptorType : must be "operation"
- * role           : must be "constructor"
- * displayName    : human readable name of constructor
- * visibility            : 1-4 where 1: always visible 4: rarely visible
- * presentationString :  xml formatted string to describe how to present operation
- *</PRE>
+ * and an implementation of the DescriptorAccess interface.</p>
+ *
+ * <P id="descriptor">
+ * The fields in the descriptor are defined, but not limited to, the following.
+ * Note that when the Type in this table is Number, a String that is the decimal
+ * representation of a Long can also be used.</P>
+ *
+ * <table border="1" cellpadding="5">
+ * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
+ * <tr><td>name</td><td>String</td>
+ *     <td>Constructor name.</td></tr>
+ * <tr><td>descriptorType</td><td>String</td>
+ *     <td>Must be "operation".</td></tr>
+ * <tr><td>role</td><td>String</td>
+ *     <td>Must be "constructor".</td></tr>
+ * <tr><td>displayName</td><td>String</td>
+ *     <td>Human readable name of constructor.</td></tr>
+ * <tr><td>visibility</td><td>Number</td>
+ *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
+ * <tr><td>presentationString</td><td>String</td>
+ *     <td>XML formatted string to describe how to present operation</td></tr>
+ * </table>
  *
  * <p>The {@code persistPolicy} and {@code currencyTimeLimit} fields
- * are meaningless for constructors, but are not considered invalid.
+ * are meaningless for constructors, but are not considered invalid.</p>
  *
  * <p>The default descriptor will have the {@code name}, {@code
  * descriptorType}, {@code displayName} and {@code role} fields.  The
@@ -152,7 +163,7 @@
         * describing the MBean constructor.
         */
         public ModelMBeanConstructorInfo(String description,
-                                         Constructor constructorMethod)
+                                         Constructor<?> constructorMethod)
     {
                 super(description, constructorMethod);
                 if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
@@ -194,7 +205,7 @@
         */
 
         public ModelMBeanConstructorInfo(String description,
-                                         Constructor constructorMethod,
+                                         Constructor<?> constructorMethod,
                                          Descriptor descriptor)
         {
 
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -156,29 +156,55 @@
 
 
     /**
-     * Returns the ModelMBean's descriptor which contains MBean wide policies.  This descriptor contains
-     * metadata about the MBean and default policies for persistence and caching.
-     * <P>
-     * The fields in the descriptor are defined, but not limited to, the following:
-     * <PRE>
-     * name           : MBean name
-     * descriptorType : must be "mbean"
-     * displayName    : name of attribute to be used in displays
-     * persistPolicy  : OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never
-     * persistLocation : The fully qualified directory name where the MBean should be persisted (if appropriate)
-     * persistFile    : File name into which the MBean should be persisted
-     * persistPeriod  : seconds - frequency of persist cycle for OnTime and NoMoreOftenThan PersistPolicy
-     * currencyTimeLimit : how long value is valid, &lt;0 never, =0 always, &gt;0 seconds
-     * log            : where t: log all notifications f: log no notifications
-     * logfile        : fully qualified filename to log events to
-     * visibility     : 1-4 where 1: always visible 4: rarely visible
-     * export         : name to be used to export/expose this MBean so that it is findable by
-     *                  other JMX Agents.
-     * presentationString : xml formatted string to allow presentation of data to be associated with the MBean.
-     * </PRE>
+     * <p>Returns the ModelMBean's descriptor which contains MBean wide
+     * policies.  This descriptor contains metadata about the MBean and default
+     * policies for persistence and caching.</p>
+     *
+     * <P id="descriptor">
+     * The fields in the descriptor are defined, but not limited to, the
+     * following.  Note that when the Type in this table is Number, a String
+     * that is the decimal representation of a Long can also be used.</P>
+     *
+     * <table border="1" cellpadding="5">
+     * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
+     * <tr><td>name</td><td>String</td>
+     *     <td>MBean name.</td></tr>
+     * <tr><td>descriptorType</td><td>String</td>
+     *     <td>Must be "mbean".</td></tr>
+     * <tr><td>displayName</td><td>String</td>
+     *     <td>Name of MBean to be used in displays.</td></tr>
+     * <tr><td>persistPolicy</td><td>String</td>
+     *     <td>One of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never.
+     *         See the section "MBean Descriptor Fields" in the JMX specification
+     *         document.</td></tr>
+     * <tr><td>persistLocation</td><td>String</td>
+     *     <td>The fully qualified directory name where the MBean should be
+     *         persisted (if appropriate).</td></tr>
+     * <tr><td>persistFile</td><td>String</td>
+     *     <td>File name into which the MBean should be persisted.</td></tr>
+     * <tr><td>persistPeriod</td><td>Number</td>
+     *     <td>Frequency of persist cycle in seconds, for OnTime and
+     *         NoMoreOftenThan PersistPolicy</td></tr>
+     * <tr><td>currencyTimeLimit</td><td>Number</td>
+     *     <td>How long cached value is valid: &lt;0 never, =0 always,
+     *         &gt;0 seconds.</td></tr>
+     * <tr><td>log</td><td>String</td>
+     *     <td>t: log all notifications, f: log no notifications.</td></tr>
+     * <tr><td>logfile</td><td>String</td>
+     *     <td>Fully qualified filename to log events to.</td></tr>
+     * <tr><td>visibility</td><td>Number</td>
+     *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
+     * <tr><td>export</td><td>String</td>
+     *     <td>Name to be used to export/expose this MBean so that it is
+     *         findable by other JMX Agents.</td></tr>
+     * <tr><td>presentationString</td><td>String</td>
+     *     <td>XML formatted string to allow presentation of data to be
+     *         associated with the MBean.</td></tr>
+     * </table>
+     *
      * <P>
      * The default descriptor is: name=className,descriptorType="mbean", displayName=className,
-     *  persistPolicy="never",log="F",export="F",visibility="1"
+     *  persistPolicy="never",log="F",visibility="1"
      * If the descriptor does not contain all these fields, they will be added with these default values.
      *
      * <p><b>Note:</b> because of inconsistencies in previous versions of
@@ -207,7 +233,7 @@
      * does a complete replacement of the descriptor, no merging is done. If the descriptor to
      * set to is null then the default descriptor will be created.
      * The default descriptor is: name=className,descriptorType="mbean", displayName=className,
-     *  persistPolicy="never",log="F",export="F",visibility="1"
+     *  persistPolicy="never",log="F",visibility="1"
      * If the descriptor does not contain all these fields, they will be added with these default values.
      *
      * See {@link #getMBeanDescriptor getMBeanDescriptor} method javadoc for description of valid field names.
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -46,34 +46,46 @@
 import javax.management.RuntimeOperationsException;
 
 /**
- * The ModelMBeanNotificationInfo object describes a notification emitted
+ * <p>The ModelMBeanNotificationInfo object describes a notification emitted
  * by a ModelMBean.
  * It is a subclass of MBeanNotificationInfo with the addition of an
- * associated Descriptor and an implementation of the Descriptor interface.
- * <P>
- * The fields in the descriptor are defined, but not limited to,
- * the following:
- * <PRE>
- * name           : notification name
- * descriptorType : must be "notification"
- * severity       : 0-6 where 0: unknown; 1: non-recoverable;
- *                  2: critical, failure; 3: major, severe;
- *                  4: minor, marginal, error; 5: warning;
- *                  6: normal, cleared, informative
- * messageID      : unique key for message text (to allow translation,
- *                  analysis)
- * messageText    : text of notification
- * log            : T - log message F - do not log message
- * logfile        : string fully qualified file name appropriate for
- *                  operating system
- * visibility     : 1-4 where 1: always visible 4: rarely visible
- * presentationString : xml formatted string to allow presentation of data
- * </PRE>
- * The default descriptor contains the name, descriptorType,
+ * associated Descriptor and an implementation of the Descriptor interface.</p>
+ *
+ * <P id="descriptor">
+ * The fields in the descriptor are defined, but not limited to, the following.
+ * Note that when the Type in this table is Number, a String that is the decimal
+ * representation of a Long can also be used.</P>
+ *
+ * <table border="1" cellpadding="5">
+ * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
+ * <tr><td>name</td><td>String</td>
+ *     <td>Notification name.</td></tr>
+ * <tr><td>descriptorType</td><td>String</td>
+ *     <td>Must be "notification".</td></tr>
+ * <tr><td>severity</td><td>Number</td>
+ *     <td>0-6 where 0: unknown; 1: non-recoverable;
+ *         2: critical, failure; 3: major, severe;
+ *         4: minor, marginal, error; 5: warning;
+ *         6: normal, cleared, informative</td></tr>
+ * <tr><td>messageID</td><td>String</td>
+ *     <td>Unique key for message text (to allow translation, analysis).</td></tr>
+ * <tr><td>messageText</td><td>String</td>
+ *     <td>Text of notification.</td></tr>
+ * <tr><td>log</td><td>String</td>
+ *     <td>T - log message, F - do not log message.</td></tr>
+ * <tr><td>logfile</td><td>String</td>
+ *     <td>fully qualified file name appropriate for operating system.</td></tr>
+ * <tr><td>visibility</td><td>Number</td>
+ *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
+ * <tr><td>presentationString</td><td>String</td>
+ *     <td>XML formatted string to allow presentation of data.</td></tr>
+ * </table>
+ *
+ * <p>The default descriptor contains the name, descriptorType,
  * displayName and severity(=6) fields.  The default value of the name
  * and displayName fields is the name of the Notification class (as
  * specified by the <code>name</code> parameter of the
- * ModelMBeanNotificationInfo constructor).
+ * ModelMBeanNotificationInfo constructor).</p>
  *
  * <p>The <b>serialVersionUID</b> of this class is <code>-7445681389570207141L</code>.
  *
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -49,27 +49,48 @@
 import javax.management.RuntimeOperationsException;
 
 /**
- * The ModelMBeanOperationInfo object describes a management operation of the ModelMBean.
- * It is a subclass of MBeanOperationInfo with the addition of an associated Descriptor
- * and an implementation of the DescriptorAccess interface.
- * <P>
- * <PRE>
- * The fields in the descriptor are defined, but not limited to, the following:
- * name           : operation name
- * descriptorType : must be "operation"
- * class          : class where method is defined (fully qualified)
- * role           : must be "operation", "getter", or "setter
- * targetObject   : object on which to execute this method
- * targetType     : type of object reference for targetObject. Can be:
- *                  ObjectReference | Handle | EJBHandle | IOR | RMIReference.
- * value          : cached value for operation
- * currencyTimeLimit : how long cached value is valid
- * lastUpdatedTimeStamp : when cached value was set
- * visibility            : 1-4 where 1: always visible 4: rarely visible
- * presentationString :  xml formatted string to describe how to present operation
- * </PRE>
- * The default descriptor will have name, descriptorType, displayName and role fields set.
- * The default value of the name and displayName fields is the operation name.
+ * <p>The ModelMBeanOperationInfo object describes a management operation of
+ * the ModelMBean.  It is a subclass of MBeanOperationInfo with the addition
+ * of an associated Descriptor and an implementation of the DescriptorAccess
+ * interface.</p>
+ *
+ * <P id="descriptor">
+ * The fields in the descriptor are defined, but not limited to, the following.
+ * Note that when the Type in this table is Number, a String that is the decimal
+ * representation of a Long can also be used.</P>
+ *
+ * <table border="1" cellpadding="5">
+ * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
+ * <tr><td>name</td><td>String</td>
+ *     <td>Operation name.</td></tr>
+ * <tr><td>descriptorType</td><td>String</td>
+ *     <td>Must be "operation".</td></tr>
+ * <tr><td>class</td><td>String</td>
+ *     <td>Class where method is defined (fully qualified).</td></tr>
+ * <tr><td>role</td><td>String</td>
+ *     <td>Must be "operation", "getter", or "setter".</td></tr>
+ * <tr><td>targetObject</td><td>Object</td>
+ *     <td>Object on which to execute this method.</td></tr>
+ * <tr><td>targetType</td><td>String</td>
+ *     <td>type of object reference for targetObject. Can be:
+ *         ObjectReference | Handle | EJBHandle | IOR | RMIReference.</td></tr>
+ * <tr><td>value</td><td>Object</td>
+ *     <td>Cached value for operation.</td></tr>
+ * <tr><td>displayName</td><td>String</td>
+ *     <td>Human readable display name of the operation.</td>
+ * <tr><td>currencyTimeLimit</td><td>Number</td>
+ *     <td>How long cached value is valid.</td></tr>
+ * <tr><td>lastUpdatedTimeStamp</td><td>Number</td>
+ *     <td>When cached value was set.</td></tr>
+ * <tr><td>visibility</td><td>Number</td>
+ *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
+ * <tr><td>presentationString</td><td>String</td>
+ *     <td>XML formatted string to describe how to present operation</td></tr>
+ * </table>
+ *
+ * <p>The default descriptor will have name, descriptorType, displayName and
+ * role fields set.  The default value of the name and displayName fields is
+ * the operation name.</p>
  *
  * <p><b>Note:</b> because of inconsistencies in previous versions of
  * this specification, it is recommended not to use negative or zero
--- a/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1074,7 +1074,7 @@
                 }
             }
 
-            final Class targetClass;
+            final Class<?> targetClass;
 
             if (opClassName != null) {
                 try {
@@ -1126,20 +1126,20 @@
                   "resolving " + targetClass.getName() + "." + opMethodName);
         }
 
-        final Class[] argClasses;
+        final Class<?>[] argClasses;
 
         if (sig == null)
             argClasses = null;
         else {
             final ClassLoader targetClassLoader = targetClass.getClassLoader();
-            argClasses = new Class[sig.length];
+            argClasses = new Class<?>[sig.length];
             for (int i = 0; i < sig.length; i++) {
                 if (tracing) {
                     MODELMBEAN_LOGGER.logp(Level.FINER,
                         RequiredModelMBean.class.getName(),"resolveMethod",
                             "resolve type " + sig[i]);
                 }
-                argClasses[i] = (Class) primitiveClassMap.get(sig[i]);
+                argClasses[i] = (Class<?>) primitiveClassMap.get(sig[i]);
                 if (argClasses[i] == null) {
                     try {
                         argClasses[i] =
@@ -1170,7 +1170,7 @@
 
     /* Map e.g. "int" to int.class.  Goodness knows how many time this
        particular wheel has been reinvented.  */
-    private static final Class[] primitiveClasses = {
+    private static final Class<?>[] primitiveClasses = {
         int.class, long.class, boolean.class, double.class,
         float.class, short.class, byte.class, char.class,
     };
@@ -1178,7 +1178,7 @@
         new HashMap<String,Class<?>>();
     static {
         for (int i = 0; i < primitiveClasses.length; i++) {
-            final Class c = primitiveClasses[i];
+            final Class<?> c = primitiveClasses[i];
             primitiveClassMap.put(c.getName(), c);
         }
     }
@@ -1645,7 +1645,7 @@
                             try {
                                 ClassLoader cl =
                                     response.getClass().getClassLoader();
-                                Class c = Class.forName(respType, true, cl);
+                                Class<?> c = Class.forName(respType, true, cl);
                                 subtype = c.isInstance(response);
                             } catch (Exception e) {
                                 subtype = false;
@@ -1904,7 +1904,7 @@
             if (attrSetMethod == null) {
                 if (attrValue != null) {
                     try {
-                        final Class  clazz    = loadClass(attrType);
+                        final Class<?> clazz = loadClass(attrType);
                         if (! clazz.isInstance(attrValue))  throw new
                             InvalidAttributeValueException(clazz.getName() +
                                                            " expected, "   +
@@ -2044,8 +2044,7 @@
         final AttributeList responseList = new AttributeList();
 
         // Go through the list of attributes
-        for (Iterator i = attributes.iterator(); i.hasNext();) {
-            final Attribute attr = (Attribute) i.next();
+        for (Attribute attr : attributes.asList()) {
             try {
                 setAttribute(attr);
                 responseList.add(attr);
@@ -2799,7 +2798,7 @@
         return MBeanServerFactory.getClassLoaderRepository(server);
     }
 
-    private  Class loadClass(String className)
+    private Class<?> loadClass(String className)
         throws ClassNotFoundException {
         try {
             return Class.forName(className);
--- a/src/share/classes/javax/management/monitor/CounterMonitor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/monitor/CounterMonitor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -265,6 +265,7 @@
      * @return The derived gauge of the specified object.
      *
      */
+    @Override
     public synchronized Number getDerivedGauge(ObjectName object) {
         return (Number) super.getDerivedGauge(object);
     }
@@ -280,6 +281,7 @@
      * @return The derived gauge timestamp of the specified object.
      *
      */
+    @Override
     public synchronized long getDerivedGaugeTimeStamp(ObjectName object) {
         return super.getDerivedGaugeTimeStamp(object);
     }
@@ -595,6 +597,7 @@
      * name of the Java class of the notification and the notification
      * types sent by the counter monitor.
      */
+    @Override
     public MBeanNotificationInfo[] getNotificationInfo() {
         return notifsInfo;
     }
--- a/src/share/classes/javax/management/monitor/GaugeMonitor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/monitor/GaugeMonitor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -258,6 +258,7 @@
      * @return The derived gauge of the specified object.
      *
      */
+    @Override
     public synchronized Number getDerivedGauge(ObjectName object) {
         return (Number) super.getDerivedGauge(object);
     }
@@ -273,6 +274,7 @@
      * @return The derived gauge timestamp of the specified object.
      *
      */
+    @Override
     public synchronized long getDerivedGaugeTimeStamp(ObjectName object) {
         return super.getDerivedGaugeTimeStamp(object);
     }
@@ -477,6 +479,7 @@
      * name of the Java class of the notification and the notification
      * types sent by the gauge monitor.
      */
+    @Override
     public MBeanNotificationInfo[] getNotificationInfo() {
         return notifsInfo;
     }
--- a/src/share/classes/javax/management/monitor/Monitor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/monitor/Monitor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -34,7 +34,6 @@
 import java.security.PrivilegedAction;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -181,7 +180,7 @@
     /**
      * Executor Service.
      */
-    private static final ExecutorService executor;
+    private static final ThreadPoolExecutor executor;
     static {
         final String maximumPoolSizeSysProp = "jmx.x.monitor.maximum.pool.size";
         final String maximumPoolSizeStr = AccessController.doPrivileged(
@@ -218,7 +217,7 @@
                 TimeUnit.SECONDS,
                 new LinkedBlockingQueue<Runnable>(),
                 new DaemonThreadFactory("Executor"));
-        ((ThreadPoolExecutor)executor).allowCoreThreadTimeOut(true);
+        executor.allowCoreThreadTimeOut(true);
     }
 
     /**
@@ -517,7 +516,7 @@
         //
         ObservedObject o = createObservedObject(object);
         o.setAlreadyNotified(RESET_FLAGS_ALREADY_NOTIFIED);
-        o.setDerivedGauge(null);
+        o.setDerivedGauge(INTEGER_ZERO);
         o.setDerivedGaugeTimeStamp(System.currentTimeMillis());
         observedObjects.add(o);
 
--- a/src/share/classes/javax/management/monitor/MonitorNotification.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/monitor/MonitorNotification.java	Thu Jan 29 18:33:52 2009 -0800
@@ -201,7 +201,7 @@
      * @param derGauge The derived gauge.
      * @param trigger The threshold/string (depending on the monitor type) that triggered the notification.
      */
-    MonitorNotification(String type, Object source, long sequenceNumber, long timeStamp, String msg,
+    public MonitorNotification(String type, Object source, long sequenceNumber, long timeStamp, String msg,
                                ObjectName obsObj, String obsAtt, Object derGauge, Object trigger) {
 
         super(type, source, sequenceNumber, timeStamp, msg);
--- a/src/share/classes/javax/management/namespace/JMXDomain.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/namespace/JMXDomain.java	Thu Jan 29 18:33:52 2009 -0800
@@ -35,7 +35,6 @@
 import javax.management.InstanceNotFoundException;
 import javax.management.MBeanServer;
 import javax.management.MBeanServerDelegate;
-import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 
 /**
@@ -291,12 +290,9 @@
     public static ObjectName getDomainObjectName(String domain) {
         if (domain == null) return null;
         if (domain.contains(NAMESPACE_SEPARATOR))
-            throw new IllegalArgumentException(domain);
-        try {
-            return ObjectName.getInstance(domain, "type", TYPE);
-        } catch (MalformedObjectNameException x) {
-            throw new IllegalArgumentException(domain,x);
-        }
+            throw new IllegalArgumentException("domain contains " +
+                    NAMESPACE_SEPARATOR+": "+domain);
+        return ObjectName.valueOf(domain, "type", TYPE);
     }
 
 
--- a/src/share/classes/javax/management/namespace/JMXNamespacePermission.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/namespace/JMXNamespacePermission.java	Thu Jan 29 18:33:52 2009 -0800
@@ -136,7 +136,8 @@
  * <code>**</code> matches any number of sub namespaces
  * recursively, but only if used as a complete namespace path element,
  * as in <code>*&#42;//b//c//D:k=v</code> or <code>a//*&#42;//c//D:k=v</code>
- * - see <a href="#metawildcard">below</a>.
+ * - see ObjectName <a href="../ObjectName.html#metawildcard">documentation</a>
+ * for more details.
  * </p>
  *
  *
@@ -270,38 +271,9 @@
  * </pre>
  * <p><b>Note on wildcards:</b> In an object name pattern, a path element
  *    of exactly <code>**</code> corresponds to a meta
- *    wildcard that will match any number of sub namespaces. Hence:</p>
- * <ul>
- * <table border="1">
- * <thead><th>pattern</th><th>matches</th><th>doesn't match</th></thead>
- * <tbody>
- * <tr><td><code>*&#42;//D:k=v</code></td>
- *     <td><code>a//D:k=v</code><br>
- *         <code>a//b//D:k=v</code><br>
- *         <code>a//b//c//D:k=v</code></td>
- *     <td><code>D:k=v</code></td></tr>
- * <tr><td><code>a//*&#42;//D:k=v</code></td>
- *     <td><code>a//b//D:k=v</code><br>
- *         <code>a//b//c//D:k=v</code></td>
- *     <td><code>b//b//c//D:k=v</code><br>
- *         <code>a//D:k=v</code><br>
- *         <code>D:k=v</code></td></tr>
- * <tr><td><code>a//*&#42;//e//D:k=v</code></td>
- *     <td><code>a//b//e//D:k=v</code><br>
- *         <code>a//b//c//e//D:k=v</code></td>
- *     <td><code>a//b//c//c//D:k=v</code><br>
- *         <code>b//b//c//e//D:k=v</code><br>
- *         <code>a//e//D:k=v</code><br>
- *         <code>e//D:k=v</code></td></tr>
- * <tr><td><code>a//b*&#42;//e//D:k=v</code></td>
- *      <td><code>a//b//e//D:k=v</code></td>
- *      <td><code>a//b//c//e//D:k=v</code><br>
- *          because in that case <code>b*&#42;</code><br>
- *         is not a meta-wildcard - and <code>b**</code><br>
- *         is thus equivalent to <code>b*</code>.</td></tr>
- * </tbody>
- * </table>
- *</ul>
+ *    wildcard that will match any number of sub namespaces.
+ *    See ObjectName <a href="../ObjectName.html#metawildcard">documentation</a>
+ *    for more details.</p>
  *
  * <p>If {@code <mbean server name>::} is omitted, then one of
  * <code>member</code> or <code>object name</code> may be omitted.
--- a/src/share/classes/javax/management/namespace/JMXNamespaces.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/namespace/JMXNamespaces.java	Thu Jan 29 18:33:52 2009 -0800
@@ -26,21 +26,19 @@
 package javax.management.namespace;
 
 import com.sun.jmx.defaults.JmxProperties;
-import com.sun.jmx.namespace.JMXNamespaceUtils;
 import com.sun.jmx.namespace.ObjectNameRouter;
 import com.sun.jmx.namespace.serial.RewritingProcessor;
 import com.sun.jmx.namespace.RoutingConnectionProxy;
 import com.sun.jmx.namespace.RoutingServerProxy;
 
-import java.io.IOException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.management.InstanceNotFoundException;
 import javax.management.MBeanServer;
 import javax.management.MBeanServerConnection;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
-import javax.management.remote.JMXConnector;
 
 /**
  * Static constants and utility methods to help work with
@@ -69,23 +67,6 @@
 
 
     /**
-     * Returns a connector connected to a sub name space exposed through
-     * the parent connector.
-     * @param parent the parent connector.
-     * @param namespace the {@linkplain javax.management.namespace name space}
-     *                  to which the returned connector is
-     *                  connected.
-     * @return A connector connected to a sub name space exposed through
-     * the parent connector.
-     **/
-    public static JMXConnector narrowToNamespace(final JMXConnector parent,
-                                  final String namespace)
-        throws IOException {
-
-        return JMXNamespaceUtils.cd(parent,namespace,true);
-    }
-
-    /**
      * Creates a new {@code MBeanServerConnection} proxy on a
      * {@linkplain javax.management.namespace sub name space}
      * of the given parent.
@@ -96,15 +77,18 @@
      *               name space} in which to narrow.
      * @return A new {@code MBeanServerConnection} proxy that shows the content
      *         of that name space.
-     * @throws IllegalArgumentException if the name space does not exist, or
-     *         if a proxy for that name space cannot be created.
+     * @throws IllegalArgumentException if either argument is null,
+     * or the name space does not exist, or if a proxy for that name space
+     * cannot be created.  The {@linkplain Throwable#getCause() cause} of
+     * this exception will be an {@link InstanceNotFoundException} if and only
+     * if the name space is found not to exist.
      */
     public static MBeanServerConnection narrowToNamespace(
                         MBeanServerConnection parent,
                         String namespace) {
         if (LOG.isLoggable(Level.FINER))
             LOG.finer("Making MBeanServerConnection for: " +namespace);
-        return RoutingConnectionProxy.cd(parent,namespace);
+        return RoutingConnectionProxy.cd(parent, namespace, true);
     }
 
     /**
@@ -120,13 +104,15 @@
      *         of that name space.
      * @throws IllegalArgumentException if either argument is null,
      * or the name space does not exist, or if a proxy for that name space
-     * cannot be created.
+     * cannot be created.  The {@linkplain Throwable#getCause() cause} of
+     * this exception will be an {@link InstanceNotFoundException} if and only
+     * if the name space is found not to exist.
      */
     public static MBeanServer narrowToNamespace(MBeanServer parent,
             String namespace) {
         if (LOG.isLoggable(Level.FINER))
-            LOG.finer("Making NamespaceServerProxy for: " +namespace);
-        return RoutingServerProxy.cd(parent,namespace);
+            LOG.finer("Making MBeanServer for: " +namespace);
+        return RoutingServerProxy.cd(parent, namespace, true);
     }
 
     /**
@@ -266,7 +252,7 @@
                 ObjectNameRouter.normalizeNamespacePath(namespace,false,
                             true,false);
         try {
-            // We could use Util.newObjectName here - but throwing an
+            // We could use ObjectName.valueOf here - but throwing an
             // IllegalArgumentException that contains just the supplied
             // namespace instead of the whole ObjectName seems preferable.
             return ObjectName.getInstance(sourcePath+
@@ -306,17 +292,13 @@
         if (path == null || to == null)
             throw new IllegalArgumentException("Null argument");
         checkTrailingSlashes(path);
-        try {
-            String prefix = path;
-            if (!prefix.equals("")) prefix =
-                    ObjectNameRouter.normalizeNamespacePath(
+        String prefix = path;
+        if (!prefix.equals(""))
+            prefix = ObjectNameRouter.normalizeNamespacePath(
                         prefix + NAMESPACE_SEPARATOR,false,false,false);
-            return to.withDomain(
+         return to.withDomain(
                     ObjectNameRouter.normalizeDomain(
                         prefix+to.getDomain(),false));
-        } catch (MalformedObjectNameException x) {
-            throw new IllegalArgumentException(path+": "+x,x);
-        }
     }
 
     /**
--- a/src/share/classes/javax/management/namespace/JMXRemoteNamespace.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/namespace/JMXRemoteNamespace.java	Thu Jan 29 18:33:52 2009 -0800
@@ -27,10 +27,10 @@
 
 import com.sun.jmx.defaults.JmxProperties;
 import com.sun.jmx.mbeanserver.Util;
-import com.sun.jmx.namespace.JMXNamespaceUtils;
 import com.sun.jmx.remote.util.EnvHelp;
 
 import java.io.IOException;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
@@ -39,6 +39,7 @@
 
 import javax.management.AttributeChangeNotification;
 
+import javax.management.ClientContext;
 import javax.management.InstanceNotFoundException;
 import javax.management.ListenerNotFoundException;
 import javax.management.MBeanNotificationInfo;
@@ -220,17 +221,26 @@
                 initParentOnce(this);
 
         // URL must not be null.
-        this.jmxURL     = JMXNamespaceUtils.checkNonNull(sourceURL,"url");
+        if (sourceURL == null)
+            throw new IllegalArgumentException("Null URL");
+        this.jmxURL     = sourceURL;
         this.broadcaster =
             new NotificationBroadcasterSupport(connectNotification);
 
         // handles options
-        this.optionsMap = JMXNamespaceUtils.unmodifiableMap(optionsMap);
+        this.optionsMap = unmodifiableMap(optionsMap);
 
         // handles (dis)connection events
         this.listener = new ConnectionListener();
     }
 
+    // returns un unmodifiable view of a map.
+    private static <K,V> Map<K,V> unmodifiableMap(Map<K,V> aMap) {
+        if (aMap == null || aMap.isEmpty())
+            return Collections.emptyMap();
+        return Collections.unmodifiableMap(aMap);
+    }
+
    /**
     * Returns the {@code JMXServiceURL} that is (or will be) used to
     * connect to the remote name space. <p>
@@ -483,106 +493,171 @@
         }
     }
 
-    JMXConnector connect(JMXServiceURL url, Map<String,?> env)
+    private JMXConnector connect(JMXServiceURL url, Map<String,?> env)
             throws IOException {
-        final JMXConnector c = newJMXConnector(jmxURL, env);
+        final JMXConnector c = newJMXConnector(url, env);
         c.connect(env);
         return c;
     }
 
     /**
-     * Creates a new JMXConnector with the specified {@code url} and
-     * {@code env} options map.
-     * <p>
-     * This method first calls {@link JMXConnectorFactory#newJMXConnector
-     * JMXConnectorFactory.newJMXConnector(jmxURL, env)} to obtain a new
-     * JMX connector, and returns that.
-     * </p>
-     * <p>
-     * A subclass of {@link JMXRemoteNamespace} can provide an implementation
-     * that connects to a  sub namespace of the remote server by subclassing
-     * this class in the following way:
-     * <pre>
-     * class JMXRemoteSubNamespace extends JMXRemoteNamespace {
-     *    private final String subnamespace;
-     *    JMXRemoteSubNamespace(JMXServiceURL url,
-     *              Map{@code <String,?>} env, String subnamespace) {
-     *        super(url,options);
-     *        this.subnamespace = subnamespace;
-     *    }
-     *    protected JMXConnector newJMXConnector(JMXServiceURL url,
-     *              Map<String,?> env) throws IOException {
-     *        final JMXConnector inner = super.newJMXConnector(url,env);
-     *        return {@link JMXNamespaces#narrowToNamespace(JMXConnector,String)
-     *               JMXNamespaces.narrowToNamespace(inner,subnamespace)};
-     *    }
-     * }
-     * </pre>
-     * </p>
-     * <p>
-     * Some connectors, like the JMXMP connector server defined by the
-     * version 1.2 of the JMX API may not have been upgraded to use the
-     * new {@linkplain javax.management.event Event Service} defined in this
-     * version of the JMX API.
-     * <p>
-     * In that case, and if the remote server to which this JMXRemoteNamespace
-     * connects also contains namespaces, it may be necessary to configure
-     * explicitly an {@linkplain
-     * javax.management.event.EventClientDelegate#newForwarder()
-     * Event Client Forwarder} on the remote server side, and to force the use
-     * of an {@link EventClient} on this client side.
-     * <br>
-     * A subclass of {@link JMXRemoteNamespace} can provide an implementation
-     * of {@code newJMXConnector} that will force notification subscriptions
-     * to flow through an {@link EventClient} over a legacy protocol by
-     * overriding this method in the following way:
-     * </p>
-     * <pre>
-     * class JMXRemoteEventClientNamespace extends JMXRemoteNamespace {
-     *    JMXRemoteSubNamespaceConnector(JMXServiceURL url,
-     *              Map<String,?> env) {
-     *        super(url,options);
-     *    }
-     *    protected JMXConnector newJMXConnector(JMXServiceURL url,
-     *              Map<String,?> env) throws IOException {
-     *        final JMXConnector inner = super.newJMXConnector(url,env);
-     *        return {@link EventClient#withEventClient(
-     *                JMXConnector) EventClient.withEventClient(inner)};
-     *    }
-     * }
-     * </pre>
-     * <p>
-     * Note that the remote server also needs to provide an {@link
-     * javax.management.event.EventClientDelegateMBean}: only configuring
-     * the client side (this object) is not enough.<br>
-     * In summary, this technique should be used if the remote server
-     * supports JMX namespaces, but uses a JMX Connector Server whose
-     * implementation does not transparently use the new Event Service
-     * (as would be the case with the JMXMPConnectorServer implementation
-     * from the reference implementation of the JMX Remote API 1.0
-     * specification).
-     * </p>
+     * <p>Creates a new JMXConnector with the specified {@code url} and
+     * {@code env} options map.  The default implementation of this method
+     * returns {@link JMXConnectorFactory#newJMXConnector
+     * JMXConnectorFactory.newJMXConnector(jmxURL, env)}.  Subclasses can
+     * override this method to customize behavior.</p>
+     *
      * @param url  The JMXServiceURL of the remote server.
-     * @param optionsMap An unmodifiable options map that will be passed to the
+     * @param optionsMap An options map that will be passed to the
      *        {@link JMXConnectorFactory} when {@linkplain
      *        JMXConnectorFactory#newJMXConnector creating} the
      *        {@link JMXConnector} that can connect to the remote source
      *        MBean Server.
-     * @return An unconnected JMXConnector to use to connect to the remote
-     *         server
-     * @throws java.io.IOException if the connector could not be created.
+     * @return A JMXConnector to use to connect to the remote server
+     * @throws IOException if the connector could not be created.
      * @see JMXConnectorFactory#newJMXConnector(javax.management.remote.JMXServiceURL, java.util.Map)
      * @see #JMXRemoteNamespace
      */
     protected JMXConnector newJMXConnector(JMXServiceURL url,
             Map<String,?> optionsMap) throws IOException {
-        final JMXConnector c =
-                JMXConnectorFactory.newJMXConnector(jmxURL, optionsMap);
-// TODO: uncomment this when contexts are added
-//        return ClientContext.withDynamicContext(c);
-        return c;
+        return JMXConnectorFactory.newJMXConnector(jmxURL, optionsMap);
     }
 
+    /**
+     * <p>Called when a new connection is established using {@link #connect}
+     * so that subclasses can customize the connection.  The default
+     * implementation of this method effectively does the following:</p>
+     *
+     * <pre>
+     * MBeanServerConnection mbsc = {@link JMXConnector#getMBeanServerConnection()
+     *                               jmxc.getMBeanServerConnection()};
+     * try {
+     *     return {@link ClientContext#withDynamicContext
+     *             ClientContext.withDynamicContext(mbsc)};
+     * } catch (IllegalArgumentException e) {
+     *     return mbsc;
+     * }
+     * </pre>
+     *
+     * <p>In other words, it arranges for the client context to be forwarded
+     * to the remote MBean Server if the remote MBean Server supports contexts;
+     * otherwise it ignores the client context.</p>
+     *
+     * <h4>Example: connecting to a remote namespace</h4>
+     *
+     * <p>A subclass that wanted to narrow into a namespace of
+     * the remote MBeanServer might look like this:</p>
+     *
+     * <pre>
+     * class JMXRemoteSubNamespace extends JMXRemoteNamespace {
+     *     private final String subnamespace;
+     *
+     *     JMXRemoteSubNamespace(
+     *             JMXServiceURL url, Map{@code <String, ?>} env, String subnamespace) {
+     *        super(url, env);
+     *        this.subnamespace = subnamespace;
+     *     }
+     *
+     *     {@code @Override}
+     *     protected MBeanServerConnection getMBeanServerConnection(
+     *             JMXConnector jmxc) throws IOException {
+     *         MBeanServerConnection mbsc = super.getMBeanServerConnection(jmxc);
+     *         return {@link JMXNamespaces#narrowToNamespace(MBeanServerConnection,String)
+     *                 JMXNamespaces.narrowToNamespace(mbsc, subnamespace)};
+     *     }
+     * }
+     * </pre>
+     *
+     * <h4>Example: using the Event Service for notifications</h4>
+     *
+     * <p>Some connectors may have been designed to work with an earlier
+     * version of the JMX API, and may not have been upgraded to use
+     * the {@linkplain javax.management.event Event Service} defined in
+     * this version of the JMX API.  In that case, and if the remote
+     * server to which this JMXRemoteNamespace connects also contains
+     * namespaces, it may be necessary to configure explicitly an {@linkplain
+     * javax.management.event.EventClientDelegate#newForwarder Event Client
+     * Forwarder} on the remote server side, and to force the use of an {@link
+     * EventClient} on this client side.</p>
+     *
+     * <p>A subclass of {@link JMXRemoteNamespace} can provide an
+     * implementation of {@code getMBeanServerConnection} that will force
+     * notification subscriptions to flow through an {@link EventClient} over
+     * a legacy protocol.  It can do so by overriding this method in the
+     * following way:</p>
+     *
+     * <pre>
+     * class JMXRemoteEventClientNamespace extends JMXRemoteNamespace {
+     *     JMXRemoteEventClientNamespace(JMXServiceURL url, {@code Map<String,?>} env) {
+     *         super(url, env);
+     *     }
+     *
+     *     {@code @Override}
+     *     protected MBeanServerConnection getMBeanServerConnection(JMXConnector jmxc)
+     *             throws IOException {
+     *         MBeanServerConnection mbsc = super.getMBeanServerConnection(jmxc);
+     *         return EventClient.getEventClientConnection(mbsc);
+     *     }
+     * }
+     * </pre>
+     *
+     * <p>
+     * Note that the remote server also needs to provide an {@link
+     * javax.management.event.EventClientDelegateMBean}: configuring only
+     * the client side (this object) is not enough.</p>
+     *
+     * <p>In summary, this technique should be used if the remote server
+     * supports JMX namespaces, but uses a JMX Connector Server whose
+     * implementation does not transparently use the new Event Service
+     * (as would be the case with the JMXMPConnectorServer implementation
+     * from the reference implementation of the JMX Remote API 1.0
+     * specification).</p>
+     *
+     * @param jmxc the newly-created {@code JMXConnector}.
+     *
+     * @return an {@code MBeanServerConnection} connected to the remote
+     * MBeanServer.
+     *
+     * @throws IOException if the connection cannot be made.  If this method
+     * throws {@code IOException} then the calling {@link #connect()} method
+     * will also fail with an {@code IOException}.
+     *
+     * @see #connect
+     */
+    protected MBeanServerConnection getMBeanServerConnection(JMXConnector jmxc)
+            throws IOException {
+        final MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
+        try {
+            return ClientContext.withDynamicContext(mbsc);
+        } catch (IllegalArgumentException e) {
+            LOG.log(Level.FINER, "ClientContext.withDynamicContext", e);
+            return mbsc;
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * <p>The sequence of events when this method is called includes,
+     * effectively, the following code:</p>
+     *
+     * <pre>
+     * JMXServiceURL url = {@link #getJMXServiceURL getJMXServiceURL}();
+     * JMXConnector jmxc = {@link #newJMXConnector newJMXConnector}(url, env);
+     * jmxc.connect();
+     * MBeanServerConnection mbsc = {@link #getMBeanServerConnection(JMXConnector)
+     *                               getMBeanServerConnection}(jmxc);
+     * </pre>
+     *
+     * <p>Here, {@code env} is a {@code Map} containing the entries from the
+     * {@code optionsMap} that was passed to the {@linkplain #JMXRemoteNamespace
+     * constructor} or to the {@link #newJMXRemoteNamespace newJMXRemoteNamespace}
+     * factory method.</p>
+     *
+     * <p>Subclasses can customize connection behavior by overriding the
+     * {@code getJMXServiceURL}, {@code newJMXConnector}, or
+     * {@code getMBeanServerConnection} methods.</p>
+     */
     public void connect() throws IOException {
         LOG.fine("connecting...");
         final Map<String,Object> env =
@@ -590,7 +665,7 @@
         try {
             // XXX: We should probably document this...
             // This allows to specify a loader name - which will be
-            // retrieved from the paret MBeanServer.
+            // retrieved from the parent MBeanServer.
             defaultClassLoader =
                 EnvHelp.resolveServerClassLoader(env,getMBeanServer());
         } catch (InstanceNotFoundException x) {
@@ -604,7 +679,7 @@
         final JMXConnector aconn = connect(url,env);
         final MBeanServerConnection msc;
         try {
-            msc = aconn.getMBeanServerConnection();
+            msc = getMBeanServerConnection(aconn);
             aconn.addConnectionNotificationListener(listener,null,aconn);
         } catch (IOException io) {
             close(aconn);
--- a/src/share/classes/javax/management/namespace/MBeanServerSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/namespace/MBeanServerSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -457,7 +457,11 @@
      * All the various flavors of {@code MBeanServer.createMBean} methods
      * will eventually call this method. A subclass that wishes to
      * support MBean creation through {@code createMBean} thus only
-     * needs to provide an implementation for this one method.
+     * needs to provide an implementation for this one method.</p>
+     *
+     * <p>A subclass implementation of this method should respect the contract
+     * of the various {@code createMBean} methods in the {@link MBeanServer}
+     * interface, in particular as regards exception wrapping.</p>
      *
      * @param className The class name of the MBean to be instantiated.
      * @param name The object name of the MBean. May be null.
@@ -488,6 +492,17 @@
      * <CODE>preRegister</CODE> (<CODE>MBeanRegistration</CODE>
      * interface) method of the MBean has thrown an exception. The
      * MBean will not be registered.
+     * @exception RuntimeMBeanException If the MBean's constructor or its
+     * {@code preRegister} or {@code postRegister} method threw
+     * a {@code RuntimeException}. If the <CODE>postRegister</CODE>
+     * (<CODE>MBeanRegistration</CODE> interface) method of the MBean throws a
+     * <CODE>RuntimeException</CODE>, the <CODE>createMBean</CODE> method will
+     * throw a <CODE>RuntimeMBeanException</CODE>, although the MBean creation
+     * and registration succeeded. In such a case, the MBean will be actually
+     * registered even though the <CODE>createMBean</CODE> method
+     * threw an exception. Note that <CODE>RuntimeMBeanException</CODE> can
+     * also be thrown by <CODE>preRegister</CODE>, in which case the MBean
+     * will not be registered.
      * @exception MBeanException The constructor of the MBean has
      * thrown an exception
      * @exception NotCompliantMBeanException This class is not a JMX
@@ -1096,7 +1111,7 @@
             MBeanRegistrationException, MBeanException,
             NotCompliantMBeanException {
         try {
-            return safeCreateMBean(className, name, null, params, signature, true);
+            return createMBean(className, name, null, params, signature, true);
         } catch (InstanceNotFoundException ex) {
             // should not happen!
             throw new MBeanException(ex, "Unexpected exception: " + ex);
@@ -1113,7 +1128,7 @@
             throws ReflectionException, InstanceAlreadyExistsException,
             MBeanRegistrationException, MBeanException,
             NotCompliantMBeanException, InstanceNotFoundException {
-        return safeCreateMBean(className, name, loaderName, params, signature, false);
+        return createMBean(className, name, loaderName, params, signature, false);
     }
 
     /**
@@ -1126,7 +1141,7 @@
             MBeanRegistrationException, MBeanException,
             NotCompliantMBeanException {
         try {
-            return safeCreateMBean(className, name, null, null, null, true);
+            return createMBean(className, name, null, null, null, true);
         } catch (InstanceNotFoundException ex) {
             // should not happen!
             throw new MBeanException(ex, "Unexpected exception: " + ex);
@@ -1143,32 +1158,7 @@
             throws ReflectionException, InstanceAlreadyExistsException,
             MBeanRegistrationException, MBeanException,
             NotCompliantMBeanException, InstanceNotFoundException {
-        return safeCreateMBean(className, name, loaderName, null, null, false);
-    }
-
-    // make sure all exceptions are correctly wrapped in a JMXException
-    private ObjectInstance safeCreateMBean(String className,
-            ObjectName name, ObjectName loaderName, Object[] params,
-            String[] signature, boolean useRepository)
-            throws ReflectionException, InstanceAlreadyExistsException,
-            MBeanRegistrationException, MBeanException,
-            NotCompliantMBeanException, InstanceNotFoundException {
-        try {
-            return createMBean(className, name, loaderName, params,
-                               signature, useRepository);
-        } catch (ReflectionException x) { throw x;
-        } catch (InstanceAlreadyExistsException x) { throw x;
-        } catch (MBeanRegistrationException x) { throw x;
-        } catch (MBeanException x) { throw x;
-        } catch (NotCompliantMBeanException x) { throw x;
-        } catch (InstanceNotFoundException x) { throw x;
-        } catch (SecurityException x) { throw x;
-        } catch (JMRuntimeException x) { throw x;
-        } catch (RuntimeException x) {
-            throw new RuntimeOperationsException(x, x.toString());
-        } catch (Exception x) {
-            throw new MBeanException(x, x.toString());
-        }
+        return createMBean(className, name, loaderName, null, null, false);
     }
 
 
--- a/src/share/classes/javax/management/namespace/package-info.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/namespace/package-info.java	Thu Jan 29 18:33:52 2009 -0800
@@ -204,7 +204,38 @@
  *      </pre>
  *      An easier way to access MBeans contained in a name space is to
  *      <i>cd</i> inside the name space, as shown in the following paragraph.
- *  </p>
+ *  </p><p id="RejectedNamespacePatterns">
+ *      Although ObjectName patterns where the characters
+ *      <code>*</code> and <code>?</code> appear in the namespace path are
+ *      legal, they are not valid in the {@code name} parameter of the
+ *      MBean Server {@link
+ *      javax.management.MBeanServer#queryNames queryNames} and {@link
+ *      javax.management.MBeanServer#queryMBeans queryMBeans} methods.<br>
+ *      When invoking <code>queryNames</code> or  <code>queryMBeans</code>,
+ *      only ObjectNames of the form:<br>
+ *      [<em>namespace-without-pattern</em>//]*[<em>pattern-without-namespace</em>]:<em>key-properties-with-or-without-pattern</em>
+ *      are valid.<br>
+ *      In other words: in the case of {@link
+ *      javax.management.MBeanServer#queryNames queryNames} and {@link
+ *      javax.management.MBeanServer#queryMBeans queryMBeans}, if a
+ *      namespace path is present, it must not contain any pattern.
+ *  </p><p id="NamespaceAndQueries">
+ *      There is no such restriction for the {@code query} parameter of these
+ *      methods. However, it must be noted that the {@code query} parameter
+ *      will be evaluated in the context of the namespace where the MBeans
+ *      selected by the pattern specified in {@code name} are located.
+ *      This means that if {@code query} parameter is an ObjectName pattern that
+ *      contains a namespace path, no MBean name will match and the result of
+ *      the query will be empty.<br>
+ *      In other words:</p>
+ * <ul><li>{@code queryNames("foo//bar//?a?:*","b?z:type=Monitor,*")} will select
+ *         all MBeans in namespace <em>foo//bar</em> whose names match both
+ *         <em>?a?:*</em> and <em>b?z:type=Monitor,*</em>, but</li>
+ *     <li>{@code queryNames("foo//bar//?a?:*","foo//bar//b?z:type=Monitor,*")}
+ *         will select nothing because no name matching <em>?a?:*</em> will
+ *         also match <em>foo//bar//b?z:type=Monitor,*</em>.
+ *     </li>
+ *  </ul>
  *
  *  <h3 id="ChangeTo">Narrowing Down Into a Name Spaces</h3>
  *  <p>
@@ -228,7 +259,8 @@
  *      to name space {@code "foo"} behaves just like a regular MBean server.
  *      However, it may sometimes throw an {@link
  *      java.lang.UnsupportedOperationException UnsupportedOperationException}
- *      wrapped in a JMX exception if you try to call an operation which is not
+ *      wrapped in a {@link javax.management.RuntimeOperationsException
+ *      RuntimeOperationsException} if you try to call an operation which is not
  *      supported by the underlying name space handler.
  *      <br>For instance, {@link javax.management.MBeanServer#registerMBean
  *      registerMBean} is not supported for name spaces mounted from remote
--- a/src/share/classes/javax/management/openmbean/ArrayType.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/ArrayType.java	Thu Jan 29 18:33:52 2009 -0800
@@ -296,7 +296,7 @@
         // Check and construct state specific to ArrayType
         //
         if (elementType.isArray()) {
-            ArrayType at = (ArrayType) elementType;
+            ArrayType<?> at = (ArrayType<?>) elementType;
             this.dimension = at.getDimension() + dimension;
             this.elementType = at.getElementOpenType();
             this.primitiveArray = at.isPrimitiveArray();
@@ -384,7 +384,7 @@
 
     /* Package-private constructor for callers we trust to get it right. */
     ArrayType(String className, String typeName, String description,
-              int dimension, OpenType elementType,
+              int dimension, OpenType<?> elementType,
               boolean primitiveArray) {
         super(className, typeName, description, true);
         this.dimension = dimension;
@@ -397,7 +397,7 @@
         throws OpenDataException {
         boolean isPrimitiveArray = false;
         if (elementType.isArray()) {
-            isPrimitiveArray = ((ArrayType) elementType).isPrimitiveArray();
+            isPrimitiveArray = ((ArrayType<?>) elementType).isPrimitiveArray();
         }
         return buildArrayClassName(dimension, elementType, isPrimitiveArray);
     }
@@ -443,7 +443,7 @@
         throws OpenDataException {
         boolean isPrimitiveArray = false;
         if (elementType.isArray()) {
-            isPrimitiveArray = ((ArrayType) elementType).isPrimitiveArray();
+            isPrimitiveArray = ((ArrayType<?>) elementType).isPrimitiveArray();
         }
         return buildArrayDescription(dimension, elementType, isPrimitiveArray);
     }
@@ -453,7 +453,7 @@
                                                 boolean isPrimitiveArray)
         throws OpenDataException {
         if (elementType.isArray()) {
-            ArrayType at = (ArrayType) elementType;
+            ArrayType<?> at = (ArrayType<?>) elementType;
             dimension += at.getDimension();
             elementType = at.getElementOpenType();
             isPrimitiveArray = at.isPrimitiveArray();
@@ -551,7 +551,7 @@
             return false;
         }
 
-        Class  objClass     = obj.getClass();
+        Class<?> objClass = obj.getClass();
         String objClassName = objClass.getName();
 
         // if obj is not an array, return false
@@ -636,8 +636,8 @@
     }
 
     @Override
-    boolean isAssignableFrom(OpenType ot) {
-        if (!(ot instanceof ArrayType))
+    boolean isAssignableFrom(OpenType<?> ot) {
+        if (!(ot instanceof ArrayType<?>))
             return false;
         ArrayType<?> at = (ArrayType<?>) ot;
         return (at.getDimension() == getDimension() &&
@@ -675,9 +675,9 @@
 
         // if obj is not an ArrayType, return false
         //
-        if (!(obj instanceof ArrayType))
+        if (!(obj instanceof ArrayType<?>))
             return false;
-        ArrayType other = (ArrayType) obj;
+        ArrayType<?> other = (ArrayType<?>) obj;
 
         // if other's dimension is different than this instance's, return false
         //
@@ -879,6 +879,7 @@
         // Build primitive array
         //
         try {
+            @SuppressWarnings("rawtypes")
             ArrayType at = new ArrayType(simpleType, true);
             if (n > 1)
                 at = new ArrayType<T>(n - 1, at);
@@ -934,7 +935,7 @@
         }
     }
 
-    private ArrayType convertFromWrapperToPrimitiveTypes() {
+    private <T> ArrayType<T> convertFromWrapperToPrimitiveTypes() {
         String cn = getClassName();
         String tn = getTypeName();
         String d = getDescription();
@@ -952,8 +953,8 @@
                 break;
             }
         }
-        return new ArrayType(cn, tn, d,
-                             dimension, elementType, primitiveArray);
+        return new ArrayType<T>(cn, tn, d,
+                                dimension, elementType, primitiveArray);
     }
 
     /**
@@ -1002,7 +1003,7 @@
         }
     }
 
-    private ArrayType convertFromPrimitiveToWrapperTypes() {
+    private <T> ArrayType<T> convertFromPrimitiveToWrapperTypes() {
         String cn = getClassName();
         String tn = getTypeName();
         String d = getDescription();
@@ -1020,7 +1021,7 @@
                 break;
             }
         }
-        return new ArrayType(cn, tn, d,
-                             dimension, elementType, primitiveArray);
+        return new ArrayType<T>(cn, tn, d,
+                                dimension, elementType, primitiveArray);
     }
 }
--- a/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java	Thu Jan 29 18:33:52 2009 -0800
@@ -236,8 +236,8 @@
         if (other == null)
             return false;
 
-        final Class proxyClass = proxy.getClass();
-        final Class otherClass = other.getClass();
+        final Class<?> proxyClass = proxy.getClass();
+        final Class<?> otherClass = other.getClass();
         if (proxyClass != otherClass)
             return false;
         InvocationHandler otherih = Proxy.getInvocationHandler(other);
--- a/src/share/classes/javax/management/openmbean/CompositeDataSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/CompositeDataSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -33,12 +33,14 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
 // jmx import
+import java.util.TreeSet;
 //
 
 
@@ -60,16 +62,15 @@
      * respective values.
      *         A {@link SortedMap} is used for faster retrieval of elements.
      */
-    private SortedMap<String, Object> contents = new TreeMap<String, Object>();
+    private final SortedMap<String, Object> contents;
 
     /**
      * @serial The <i>composite type </i> of this <i>composite data</i> instance.
      */
-    private CompositeType compositeType;
+    private final CompositeType compositeType;
 
     /**
-     * <p>
-     * Constructs a <tt>CompositeDataSupport</tt> instance with the specified
+     * <p>Constructs a <tt>CompositeDataSupport</tt> instance with the specified
      * <tt>compositeType</tt>, whose item values
      * are specified by <tt>itemValues[]</tt>, in the same order as in
      * <tt>itemNames[]</tt>.
@@ -79,41 +80,124 @@
      * The items contained in this <tt>CompositeDataSupport</tt> instance are
      * internally stored in a <tt>TreeMap</tt>,
      * thus sorted in ascending lexicographic order of their names, for faster
-     * retrieval of individual item values.
-     * <p>
-     * The constructor checks that all the constraints listed below for each
+     * retrieval of individual item values.</p>
+     *
+     * <p>The constructor checks that all the constraints listed below for each
      * parameter are satisfied,
-     * and throws the appropriate exception if they are not.
-     * <p>
-     * @param  compositeType  the <i>composite type </i> of this <i>composite
-     * data</i> instance;
-     *                        must not be null.
-     * <p>
-     * @param  itemNames  <tt>itemNames</tt> must list, in any order, all the
-     * item names defined in <tt>compositeType</tt>;
-     *                    the order in which the names are listed, is used to
-     * match values in <tt>itemValues[]</tt>;
-     *                    must not be null or empty.
+     * and throws the appropriate exception if they are not.</p>
+     *
+     * @param compositeType the <i>composite type </i> of this <i>composite
+     * data</i> instance; must not be null.
+     *
+     * @param itemNames <tt>itemNames</tt> must list, in any order, all the
+     * item names defined in <tt>compositeType</tt>; the order in which the
+     * names are listed, is used to match values in <tt>itemValues[]</tt>; must
+     * not be null.
+     *
+     * @param itemValues the values of the items, listed in the same order as
+     * their respective names in <tt>itemNames</tt>; each item value can be
+     * null, but if it is non-null it must be a valid value for the open type
+     * defined in <tt>compositeType</tt> for the corresponding item; must be of
+     * the same size as <tt>itemNames</tt>; must not be null.
+     *
+     * @throws IllegalArgumentException <tt>compositeType</tt> is null, or
+     * <tt>itemNames[]</tt> or <tt>itemValues[]</tt> is null, or one
+     * of the elements in <tt>itemNames[]</tt> is a null or empty string, or
+     * <tt>itemNames[]</tt> and <tt>itemValues[]</tt> are not of the same size.
+     *
+     * @throws OpenDataException <tt>itemNames[]</tt> or
+     * <tt>itemValues[]</tt>'s size differs from the number of items defined in
+     * <tt>compositeType</tt>, or one of the elements in <tt>itemNames[]</tt>
+     * does not exist as an item name defined in <tt>compositeType</tt>, or one
+     * of the elements in <tt>itemValues[]</tt> is not a valid value for the
+     * corresponding item as defined in <tt>compositeType</tt>.
+     */
+    public CompositeDataSupport(
+            CompositeType compositeType, String[] itemNames, Object[] itemValues)
+            throws OpenDataException {
+        this(makeMap(itemNames, itemValues), compositeType);
+    }
+
+    private static SortedMap<String, Object> makeMap(
+            String[] itemNames, Object[] itemValues)
+            throws OpenDataException {
+
+        if (itemNames == null || itemValues == null)
+            throw new IllegalArgumentException("Null itemNames or itemValues");
+        if (itemNames.length != itemValues.length) {
+            throw new IllegalArgumentException(
+                    "Different lengths: itemNames[" + itemNames.length +
+                    "], itemValues[" + itemValues.length + "]");
+        }
+
+        SortedMap<String, Object> map = new TreeMap<String, Object>();
+        for (int i = 0; i < itemNames.length; i++) {
+            String name = itemNames[i];
+            if (name == null || name.equals(""))
+                throw new IllegalArgumentException("Null or empty item name");
+            if (map.containsKey(name))
+                throw new OpenDataException("Duplicate item name " + name);
+            map.put(itemNames[i], itemValues[i]);
+        }
+
+        return map;
+    }
+
+    /**
      * <p>
-     * @param  itemValues  the values of the items, listed in the same order as
-     * their respective names in <tt>itemNames</tt>;
-     *                     each item value can be null, but if it is non-null it must be
-     *                     a valid value for the open type defined in <tt>compositeType</tt> for the corresponding item;
-     *                     must be of the same size as <tt>itemNames</tt>; must not be null or empty.
-     * <p>
-     * @throws  IllegalArgumentException  <tt>compositeType</tt> is null, or <tt>itemNames[]</tt> or <tt>itemValues[]</tt> is null or empty,
-     *                                    or one of the elements in <tt>itemNames[]</tt>  is a null or empty string,
-     *                                    or <tt>itemNames[]</tt> and <tt>itemValues[]</tt> are not of the same size.
-     * <p>
-     * @throws  OpenDataException  <tt>itemNames[]</tt> or <tt>itemValues[]</tt>'s size differs from
-     *                             the number of items defined in <tt>compositeType</tt>,
-     *                             or one of the elements in <tt>itemNames[]</tt> does not exist as an item name defined in <tt>compositeType</tt>,
-     *                             or one of the elements in <tt>itemValues[]</tt> is not a valid value for the corresponding item
-     *                             as defined in <tt>compositeType</tt>.
-     * <p>
+     * Constructs a <tt>CompositeDataSupport</tt> instance with the specified <tt>compositeType</tt>, whose item names and corresponding values
+     * are given by the mappings in the map <tt>items</tt>.
+     * This constructor converts the keys to a string array and the values to an object array and calls
+     * <tt>CompositeDataSupport(javax.management.openmbean.CompositeType, java.lang.String[], java.lang.Object[])</tt>.
+     *
+     * @param  compositeType  the <i>composite type </i> of this <i>composite data</i> instance;
+     *                        must not be null.
+     * @param  items  the mappings of all the item names to their values;
+     *                <tt>items</tt> must contain all the item names defined in <tt>compositeType</tt>;
+     *                must not be null.
+     *
+     * @throws IllegalArgumentException <tt>compositeType</tt> is null, or
+     * <tt>items</tt> is null, or one of the keys in <tt>items</tt> is a null
+     * or empty string.
+     * @throws OpenDataException <tt>items</tt>' size differs from the
+     * number of items defined in <tt>compositeType</tt>, or one of the
+     * keys in <tt>items</tt> does not exist as an item name defined in
+     * <tt>compositeType</tt>, or one of the values in <tt>items</tt>
+     * is not a valid value for the corresponding item as defined in
+     * <tt>compositeType</tt>.
+     * @throws ArrayStoreException one or more keys in <tt>items</tt> is not of
+     * the class <tt>java.lang.String</tt>.
+     *
+     * @see #toMap
      */
-    public CompositeDataSupport(CompositeType compositeType, String[] itemNames, Object[] itemValues)
-        throws OpenDataException {
+    public CompositeDataSupport(CompositeType compositeType,
+                                Map<String,?> items)
+            throws OpenDataException {
+        this(makeMap(items), compositeType);
+    }
+
+    private static SortedMap<String, Object> makeMap(Map<String, ?> items) {
+        if (items == null)
+            throw new IllegalArgumentException("Null items map");
+        if (items.containsKey(null) || items.containsKey(""))
+            throw new IllegalArgumentException("Null or empty item name");
+
+        SortedMap<String, Object> map = new TreeMap<String, Object>();
+        for (Object key : items.keySet()) {
+            if (!(key instanceof String)) {
+                throw new ArrayStoreException("Item name is not string: " + key);
+                // This can happen because of erasure.  The particular
+                // exception is a historical artifact - an implementation
+                // detail that leaked into the API.
+            }
+            map.put((String) key, items.get(key));
+        }
+        return map;
+    }
+
+    private CompositeDataSupport(
+            SortedMap<String, Object> items, CompositeType compositeType)
+            throws OpenDataException {
 
         // Check compositeType is not null
         //
@@ -122,126 +206,42 @@
         }
 
         // item names defined in compositeType:
-        Set<String> namesSet = compositeType.keySet();
-
-        // Check the array itemNames is not null or empty (length!=0) and
-        // that there is no null element or empty string in it
-        //
-        checkForNullElement(itemNames, "itemNames");
-        checkForEmptyString(itemNames, "itemNames");
+        Set<String> namesFromType = compositeType.keySet();
+        Set<String> namesFromItems = items.keySet();
 
-        // Check the array itemValues is not null or empty (length!=0)
-        // (NOTE: we allow null values as array elements)
-        //
-        if ( (itemValues == null) || (itemValues.length == 0) ) {
-            throw new IllegalArgumentException("Argument itemValues[] cannot be null or empty.");
-        }
-
-        // Check that the sizes of the 2 arrays itemNames and itemValues are the same
-        //
-        if (itemNames.length != itemValues.length) {
-            throw new IllegalArgumentException("Array arguments itemNames[] and itemValues[] "+
-                                               "should be of same length (got "+ itemNames.length +
-                                               " and "+ itemValues.length +").");
+        // This is just a comparison, but we do it this way for a better
+        // exception message.
+        if (!namesFromType.equals(namesFromItems)) {
+            Set<String> extraFromType = new TreeSet<String>(namesFromType);
+            extraFromType.removeAll(namesFromItems);
+            Set<String> extraFromItems = new TreeSet<String>(namesFromItems);
+            extraFromItems.removeAll(namesFromType);
+            if (!extraFromType.isEmpty() || !extraFromItems.isEmpty()) {
+                throw new OpenDataException(
+                        "Item names do not match CompositeType: " +
+                        "names in items but not in CompositeType: " + extraFromItems +
+                        "; names in CompositeType but not in items: " + extraFromType);
+            }
         }
 
-        // Check the size of the 2 arrays is equal to the number of items defined in compositeType
-        //
-        if (itemNames.length != namesSet.size()) {
-            throw new OpenDataException("The size of array arguments itemNames[] and itemValues[] should be equal to the number of items defined"+
-                                        " in argument compositeType (found "+ itemNames.length +" elements in itemNames[] and itemValues[],"+
-                                        " expecting "+ namesSet.size() +" elements according to compositeType.");
-        }
-
-        // Check parameter itemNames[] contains all names defined in the compositeType of this instance
-        //
-        if ( ! Arrays.asList(itemNames).containsAll(namesSet) ) {
-            throw new OpenDataException("Argument itemNames[] does not contain all names defined in the compositeType of this instance.");
-        }
-
-        // Check each element of itemValues[], if not null, is of the open type defined for the corresponding item
-        //
-        OpenType<?> itemType;
-        for (int i=0; i<itemValues.length; i++) {
-            itemType = compositeType.getType(itemNames[i]);
-            if ( (itemValues[i] != null) && (! itemType.isValue(itemValues[i])) ) {
-                throw new OpenDataException("Argument's element itemValues["+ i +"]=\""+ itemValues[i] +"\" is not a valid value for"+
-                                            " this item (itemName="+ itemNames[i] +",itemType="+ itemType +").");
+        // Check each value, if not null, is of the open type defined for the
+        // corresponding item
+        for (String name : namesFromType) {
+            Object value = items.get(name);
+            if (value != null) {
+                OpenType<?> itemType = compositeType.getType(name);
+                if (!itemType.isValue(value)) {
+                    throw new OpenDataException(
+                            "Argument value of wrong type for item " + name +
+                            ": value " + value + ", type " + itemType);
+                }
             }
         }
 
         // Initialize internal fields: compositeType and contents
         //
         this.compositeType = compositeType;
-        for (int i=0; i<itemNames.length; i++) {
-            this.contents.put(itemNames[i], itemValues[i]);
-        }
-    }
-
-    /**
-     * <p>
-     * Constructs a <tt>CompositeDataSupport</tt> instance with the specified <tt>compositeType</tt>, whose item names and corresponding values
-     * are given by the mappings in the map <tt>items</tt>.
-     * This constructor converts the keys to a string array and the values to an object array and calls
-     * <tt>CompositeDataSupport(javax.management.openmbean.CompositeType, java.lang.String[], java.lang.Object[])</tt>.
-     * <p>
-     * @param  compositeType  the <i>composite type </i> of this <i>composite data</i> instance;
-     *                        must not be null.
-     * <p>
-     * @param  items  the mappings of all the item names to their values;
-     *                <tt>items</tt> must contain all the item names defined in <tt>compositeType</tt>;
-     *                must not be null or empty.
-     * <p>
-     * @throws  IllegalArgumentException  <tt>compositeType</tt> is null, or <tt>items</tt> is null or empty,
-     *                                    or one of the keys in <tt>items</tt>  is a null or empty string,
-     *                                    or one of the values in <tt>items</tt>  is null.
-     * <p>
-     * @throws  OpenDataException  <tt>items</tt>' size differs from the number of items defined in <tt>compositeType</tt>,
-     *                             or one of the keys in <tt>items</tt> does not exist as an item name defined in <tt>compositeType</tt>,
-     *                             or one of the values in <tt>items</tt> is not a valid value for the corresponding item
-     *                             as defined in <tt>compositeType</tt>.
-     * <p>
-     * @throws ArrayStoreException  one or more keys in <tt>items</tt> is not of the class <tt>java.lang.String</tt>.
-     * <p>
-     */
-    public CompositeDataSupport(CompositeType compositeType,
-                                Map<String,?> items)
-            throws OpenDataException {
-
-
-        // Let the other constructor do the job, as the call to another constructor must be the first call
-        //
-        this( compositeType,
-              (items==null  ?  null  :  items.keySet().toArray(new String[items.size()])), // may raise an ArrayStoreException
-              (items==null  ?  null  :  items.values().toArray()) );
-    }
-
-    /**
-     *
-     */
-    private static void checkForNullElement(Object[] arg, String argName) {
-        if ( (arg == null) || (arg.length == 0) ) {
-            throw new IllegalArgumentException(
-                       "Argument "+ argName +"[] cannot be null or empty.");
-        }
-        for (int i=0; i<arg.length; i++) {
-            if (arg[i] == null) {
-                throw new IllegalArgumentException(
-                       "Argument's element "+ argName +"["+ i +"] cannot be null.");
-            }
-        }
-    }
-
-    /**
-     *
-     */
-    private static void checkForEmptyString(String[] arg, String argName) {
-        for (int i=0; i<arg.length; i++) {
-            if (arg[i].trim().equals("")) {
-                throw new IllegalArgumentException(
-                  "Argument's element "+ argName +"["+ i +"] cannot be an empty string.");
-            }
-        }
+        this.contents = items;
     }
 
     /**
@@ -329,6 +329,54 @@
     }
 
     /**
+     * <p>Returns a Map representing the contents of the given CompositeData.
+     * Each item in the CompositeData is represented by an entry in the map,
+     * where the name and value of the item are the key and value of the entry.
+     * The returned value is modifiable but modifications to it have no effect
+     * on the original CompositeData.</p>
+     *
+     * <p>For example, if you have a CompositeData {@code cd1} and you want
+     * to produce another CompositeData {@code cd2} which is the same except
+     * that the value of its {@code id} item has been changed to 253, you
+     * could write:</p>
+     *
+     * <pre>
+     * CompositeData cd1 = ...;
+     * {@code Map<String, Object>} map = CompositeDataSupport.toMap(cd1);
+     * assert(map.get("id") instanceof Integer);
+     * map.put("id", 253);
+     * CompositeData cd2 = {@link #CompositeDataSupport(CompositeType, Map)
+     * new CompositeDataSupport}(cd1.getCompositeType(), map);
+     * </pre>
+     *
+     * <p>Logically, this method would be a method in the {@link CompositeData}
+     * interface, but cannot be for compatibility reasons.</p>
+     *
+     * @param cd the CompositeData to convert to a Map.
+     *
+     * @return a Map that is a copy of the contents of {@code cd}.
+     *
+     * @throws IllegalArgumentException if {@code cd} is null.
+     *
+     * @see #CompositeDataSupport(CompositeType, Map)
+     */
+    public static Map<String, Object> toMap(CompositeData cd) {
+        if (cd == null)
+            throw new IllegalArgumentException("Null argument");
+
+        // If we really wanted, we could check whether cd is a
+        // CompositeDataSupport and return a copy of cd.contents if so,
+        // but I don't think that would be substantially faster.
+        Map<String, Object> map = new LinkedHashMap<String, Object>();
+        CompositeType ct = cd.getCompositeType();
+        for (String key : ct.keySet()) {
+            Object value = cd.get(key);
+            map.put(key, value);
+        }
+        return map;
+    }
+
+    /**
      * Compares the specified <var>obj</var> parameter with this
      * <code>CompositeDataSupport</code> instance for equality.
      * <p>
--- a/src/share/classes/javax/management/openmbean/CompositeType.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/CompositeType.java	Thu Jan 29 18:33:52 2009 -0800
@@ -329,7 +329,7 @@
      * @return true if {@code ot} is assignable to this open type.
      */
     @Override
-    boolean isAssignableFrom(OpenType ot) {
+    boolean isAssignableFrom(OpenType<?> ot) {
         if (!(ot instanceof CompositeType))
             return false;
         CompositeType ct = (CompositeType) ot;
@@ -420,9 +420,7 @@
         if (myHashCode == null) {
             int value = 0;
             value += this.getTypeName().hashCode();
-            String key;
-            for (Iterator k = nameToDescription.keySet().iterator(); k.hasNext();  ) {
-                key = (String) k.next();
+            for (String key : nameToDescription.keySet()) {
                 value += key.hashCode();
                 value += this.nameToType.get(key).hashCode();
             }
@@ -457,10 +455,10 @@
             result.append(getTypeName());
             result.append(",items=(");
             int i=0;
-            Iterator k=nameToType.keySet().iterator();
+            Iterator<String> k=nameToType.keySet().iterator();
             String key;
             while (k.hasNext()) {
-                key = (String) k.next();
+                key = k.next();
                 if (i > 0) result.append(",");
                 result.append("(itemName=");
                 result.append(key);
--- a/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -78,12 +78,12 @@
     /**
      * @serial The open mbean attribute's min value
      */
-    private final Comparable minValue;
+    private final Comparable<?> minValue;
 
     /**
      * @serial The open mbean attribute's max value
      */
-    private final Comparable maxValue;
+    private final Comparable<?> maxValue;
 
 
     // As this instance is immutable, these two values need only
@@ -450,7 +450,7 @@
     }
 
     static void check(OpenMBeanParameterInfo info) throws OpenDataException {
-        OpenType openType = info.getOpenType();
+        OpenType<?> openType = info.getOpenType();
         if (openType == null)
             throw new IllegalArgumentException("OpenType cannot be null");
 
@@ -562,7 +562,7 @@
 
     }
 
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings({"unchecked", "rawtypes"})
     static int compare(Object x, Object y) {
         return ((Comparable) x).compareTo(y);
     }
@@ -657,11 +657,11 @@
         return result;
     }
 
-    static <T> Comparable comparableValueFrom(Descriptor d, String name,
-                                              OpenType<T> openType) {
+    static <T> Comparable<?> comparableValueFrom(Descriptor d, String name,
+                                                 OpenType<T> openType) {
         T t = valueFrom(d, name, openType);
         if (t == null || t instanceof Comparable<?>)
-            return (Comparable) t;
+            return (Comparable<?>) t;
         final String msg =
             "Descriptor field " + name + " with value " + t +
             " is not Comparable";
@@ -925,7 +925,7 @@
         return isValue(this, obj);
     }
 
-    @SuppressWarnings("unchecked")  // cast to Comparable
+    @SuppressWarnings({"unchecked", "rawtypes"})  // cast to Comparable
     static boolean isValue(OpenMBeanParameterInfo info, Object obj) {
         if (info.hasDefaultValue() && obj == null)
             return true;
--- a/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -74,12 +74,12 @@
     /**
      * @serial The open mbean parameter's min value
      */
-    private Comparable minValue        = null;
+    private Comparable<?> minValue        = null;
 
     /**
      * @serial The open mbean parameter's max value
      */
-    private Comparable maxValue        = null;
+    private Comparable<?> maxValue        = null;
 
 
     // As this instance is immutable, these two values need only
--- a/src/share/classes/javax/management/openmbean/OpenType.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/OpenType.java	Thu Jan 29 18:33:52 2009 -0800
@@ -206,7 +206,7 @@
         }
     }
 
-    private static boolean overridesGetClassName(final Class<? extends OpenType> c) {
+    private static boolean overridesGetClassName(final Class<?> c) {
         return AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
             public Boolean run() {
                 try {
--- a/src/share/classes/javax/management/openmbean/SimpleType.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/SimpleType.java	Thu Jan 29 18:33:52 2009 -0800
@@ -163,7 +163,7 @@
     public static final SimpleType<ObjectName> OBJECTNAME =
         new SimpleType<ObjectName>(ObjectName.class);
 
-    private static final SimpleType[] typeArray = {
+    private static final SimpleType<?>[] typeArray = {
         VOID, BOOLEAN, CHARACTER, BYTE, SHORT, INTEGER, LONG, FLOAT,
         DOUBLE, STRING, BIGDECIMAL, BIGINTEGER, DATE, OBJECTNAME,
     };
@@ -232,10 +232,10 @@
            return (this == obj);
         */
 
-        if (!(obj instanceof SimpleType))
+        if (!(obj instanceof SimpleType<?>))
             return false;
 
-        SimpleType other = (SimpleType) obj;
+        SimpleType<?> other = (SimpleType<?>) obj;
 
         // Test if other's className field is the same as for this instance
         //
@@ -290,11 +290,11 @@
         return myToString;
     }
 
-    private static final Map<SimpleType,SimpleType> canonicalTypes =
-        new HashMap<SimpleType,SimpleType>();
+    private static final Map<SimpleType<?>,SimpleType<?>> canonicalTypes =
+        new HashMap<SimpleType<?>,SimpleType<?>>();
     static {
         for (int i = 0; i < typeArray.length; i++) {
-            final SimpleType type = typeArray[i];
+            final SimpleType<?> type = typeArray[i];
             canonicalTypes.put(type, type);
         }
     }
@@ -310,7 +310,7 @@
      * resolved.
      */
     public Object readResolve() throws ObjectStreamException {
-        final SimpleType canonical = canonicalTypes.get(this);
+        final SimpleType<?> canonical = canonicalTypes.get(this);
         if (canonical == null) {
             // Should not happen
             throw new InvalidObjectException("Invalid SimpleType: " + this);
--- a/src/share/classes/javax/management/openmbean/TabularDataSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/TabularDataSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -30,6 +30,7 @@
 // java import
 //
 import com.sun.jmx.mbeanserver.GetPropertyAction;
+import com.sun.jmx.mbeanserver.Util;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
@@ -611,7 +612,7 @@
     @SuppressWarnings("unchecked")  // historical confusion about the return type
     public Collection<Object> values() {
 
-        return (Collection) dataMap.values() ;
+        return Util.cast(dataMap.values());
     }
 
 
@@ -647,7 +648,7 @@
     @SuppressWarnings("unchecked")  // historical confusion about the return type
     public Set<Map.Entry<Object,Object>> entrySet() {
 
-        return (Set) dataMap.entrySet();
+        return Util.cast(dataMap.entrySet());
     }
 
 
@@ -725,8 +726,7 @@
         if (this.size() != other.size()) {
             return false;
         }
-        for (Iterator iter = this.values().iterator(); iter.hasNext();  ) {
-            CompositeData value = (CompositeData) iter.next();
+        for (CompositeData value : dataMap.values()) {
             if ( ! other.containsValue(value) ) {
                 return false;
             }
@@ -760,9 +760,8 @@
         int result = 0;
 
         result += this.tabularType.hashCode();
-        for (Iterator iter = this.values().iterator(); iter.hasNext();  ) {
-            result += ((CompositeData)iter.next()).hashCode();
-        }
+        for (Object value : values())
+            result += value.hashCode();
 
         return result;
 
--- a/src/share/classes/javax/management/openmbean/TabularType.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/openmbean/TabularType.java	Thu Jan 29 18:33:52 2009 -0800
@@ -237,7 +237,7 @@
     }
 
     @Override
-    boolean isAssignableFrom(OpenType ot) {
+    boolean isAssignableFrom(OpenType<?> ot) {
         if (!(ot instanceof TabularType))
             return false;
         TabularType tt = (TabularType) ot;
@@ -329,9 +329,8 @@
             int value = 0;
             value += this.getTypeName().hashCode();
             value += this.rowType.hashCode();
-            for (Iterator k = indexNames.iterator(); k.hasNext();  ) {
-                value += k.next().hashCode();
-            }
+            for (String index : indexNames)
+                value += index.hashCode();
             myHashCode = Integer.valueOf(value);
         }
 
@@ -364,12 +363,10 @@
                 .append(",rowType=")
                 .append(rowType.toString())
                 .append(",indexNames=(");
-            int i=0;
-            Iterator k = indexNames.iterator();
-            while( k.hasNext() ) {
-                if (i > 0) result.append(",");
-                result.append(k.next().toString());
-                i++;
+            String sep = "";
+            for (String index : indexNames) {
+                result.append(sep).append(index);
+                sep = ",";
             }
             result.append("))");
             myToString = result.toString();
--- a/src/share/classes/javax/management/package.html	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/package.html	Thu Jan 29 18:33:52 2009 -0800
@@ -1,7 +1,7 @@
 <html>
-<head>
-<title>javax.management package</title>
-<!--
+    <head>
+        <title>javax.management package</title>
+        <!--
 Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
@@ -24,37 +24,37 @@
 Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
 CA 95054 USA or visit www.sun.com if you need additional information or
 have any questions.
--->
-</head>
-<body bgcolor="white">
-      <p>Provides the core classes for the Java Management Extensions.</p>
+        -->
+    </head>
+    <body bgcolor="white">
+        <p>Provides the core classes for the Java Management Extensions.</p>
 
-      <p>The Java Management Extensions
-	(JMX<sup><font size="-1">TM</font></sup>) API is a standard
-	API for management and monitoring.  Typical uses include:</p>
+        <p>The Java Management Extensions
+            (JMX<sup><font size="-1">TM</font></sup>) API is a standard
+        API for management and monitoring.  Typical uses include:</p>
 
-      <ul>
-	<li>consulting and changing application configuration</li>
+        <ul>
+            <li>consulting and changing application configuration</li>
 
-	<li>accumulating statistics about application behavior and
-	  making them available</li>
+            <li>accumulating statistics about application behavior and
+            making them available</li>
 
-	<li>notifying of state changes and erroneous conditions.</li>
-      </ul>
+            <li>notifying of state changes and erroneous conditions.</li>
+        </ul>
 
-      <p>The JMX API can also be used as part of a solution for
-	managing systems, networks, and so on.</p>
+        <p>The JMX API can also be used as part of a solution for
+        managing systems, networks, and so on.</p>
 
-      <p>The API includes remote access, so a remote management
-	program can interact with a running application for these
-	purposes.</p>
+        <p>The API includes remote access, so a remote management
+            program can interact with a running application for these
+        purposes.</p>
 
-      <h2>MBeans</h2>
+        <h2>MBeans</h2>
 
-      <p>The fundamental notion of the JMX API is the <em>MBean</em>.
-	An MBean is a named <em>managed object</em> representing a
-	resource.  It has a <em>management interface</em> consisting
-	of:</p>
+        <p>The fundamental notion of the JMX API is the <em>MBean</em>.
+            An MBean is a named <em>managed object</em> representing a
+            resource.  It has a <em>management interface</em> consisting
+        of:</p>
 
         <ul>
             <li>named and typed attributes that can be read and/or
@@ -92,40 +92,40 @@
 
         <pre>
     public interface ConfigurationMBean {
-	public int getCacheSize();
-	public void setCacheSize(int size);
-	public long getLastChangedTime();
-	public void save();
+         public int getCacheSize();
+         public void setCacheSize(int size);
+         public long getLastChangedTime();
+         public void save();
     }
-      </pre>
+        </pre>
 
-      <p>The methods <code>getCacheSize</code> and
-	<code>setCacheSize</code> define a read-write attribute of
-	type <code>int</code> called <code>CacheSize</code> (with an
-	initial capital, unlike the JavaBeans convention).</p>
+        <p>The methods <code>getCacheSize</code> and
+            <code>setCacheSize</code> define a read-write attribute of
+            type <code>int</code> called <code>CacheSize</code> (with an
+        initial capital, unlike the JavaBeans convention).</p>
 
-      <p>The method <code>getLastChangedTime</code> defines an
-	attribute of type <code>long</code> called
-	<code>LastChangedTime</code>.  This is a read-only attribute,
-	since there is no method <code>setLastChangedTime</code>.</p>
+        <p>The method <code>getLastChangedTime</code> defines an
+            attribute of type <code>long</code> called
+            <code>LastChangedTime</code>.  This is a read-only attribute,
+        since there is no method <code>setLastChangedTime</code>.</p>
 
-      <p>The method <code>save</code> defines an operation called
-	<code>save</code>.  It is not an attribute, since its name
-	does not begin with <code>get</code>, <code>set</code>, or
-	<code>is</code>.</p>
+        <p>The method <code>save</code> defines an operation called
+            <code>save</code>.  It is not an attribute, since its name
+            does not begin with <code>get</code>, <code>set</code>, or
+        <code>is</code>.</p>
 
-      <p>The exact naming patterns for Standard MBeans are detailed in
-	the <a href="#spec">JMX Specification</a>.</p>
+        <p>The exact naming patterns for Standard MBeans are detailed in
+        the <a href="#spec">JMX Specification</a>.</p>
 
-      <p>There are two ways to make a Java object that is an MBean
-	with this management interface.  One is for the object to be
-	of a class that has exactly the same name as the Java
-	interface but without the <code>MBean</code> suffix.  So in
-	the example the object would be of the class
-	<code>Configuration</code>, in the same Java package as
-	<code>ConfigurationMBean</code>.  The second way is to use the
-	{@link javax.management.StandardMBean StandardMBean}
-	class.</p>
+        <p>There are two ways to make a Java object that is an MBean
+            with this management interface.  One is for the object to be
+            of a class that has exactly the same name as the Java
+            interface but without the <code>MBean</code> suffix.  So in
+            the example the object would be of the class
+            <code>Configuration</code>, in the same Java package as
+            <code>ConfigurationMBean</code>.  The second way is to use the
+            {@link javax.management.StandardMBean StandardMBean}
+        class.</p>
 
 
         <h3 id="stdannot">Defining Standard MBeans with annotations</h3>
@@ -272,37 +272,37 @@
         <pre>
     int cacheSize = mbs.getAttribute(name, "CacheSize");
     {@link javax.management.Attribute Attribute} newCacheSize =
-    	new Attribute("CacheSize", new Integer(2000));
+         new Attribute("CacheSize", new Integer(2000));
     mbs.setAttribute(name, newCacheSize);
     mbs.invoke(name, "save", new Object[0], new Class[0]);
-      </pre>
+        </pre>
 
         <p id="proxy">Alternatively, if you have a Java interface that
             corresponds to the management interface for the MBean, you can use an
         <em>MBean proxy</em> like this:</p>
 
-      <pre>
+        <pre>
     ConfigurationMBean conf =
         {@link javax.management.JMX#newMBeanProxy
             JMX.newMBeanProxy}(mbs, name, ConfigurationMBean.class);
     int cacheSize = conf.getCacheSize();
     conf.setCacheSize(2000);
     conf.save();
-      </pre>
+        </pre>
 
-      <p>Using an MBean proxy is just a convenience.  The second
-	example ends up calling the same <code>MBeanServer</code>
-	operations as the first one.</p>
+        <p>Using an MBean proxy is just a convenience.  The second
+            example ends up calling the same <code>MBeanServer</code>
+        operations as the first one.</p>
 
-      <p>An MBean Server can be queried for MBeans whose names match
-	certain patterns and/or whose attributes meet certain
-	constraints.  Name patterns are constructed using the {@link
-	javax.management.ObjectName ObjectName} class and constraints
-	are constructed using the {@link javax.management.Query Query}
-	class.  The methods {@link
-	javax.management.MBeanServer#queryNames queryNames} and {@link
-	javax.management.MBeanServer#queryMBeans queryMBeans} then
-	perform the query.</p>
+        <p>An MBean Server can be queried for MBeans whose names match
+            certain patterns and/or whose attributes meet certain
+            constraints.  Name patterns are constructed using the {@link
+            javax.management.ObjectName ObjectName} class and constraints
+            are constructed using the {@link javax.management.Query Query}
+            class.  The methods {@link
+            javax.management.MBeanServer#queryNames queryNames} and {@link
+            javax.management.MBeanServer#queryMBeans queryMBeans} then
+        perform the query.</p>
 
 
         <h3>MBean lifecycle and resource injection</h3>
@@ -407,6 +407,92 @@
             So for example an SNMP GET operation might result in a
         <code>getAttribute</code> on the MBean Server.</p>
 
+	<h3 id="interop">Interoperability between versions of the JMX
+	  specification</h3>
+
+	<p>When a client connects to a server using the JMX Remote
+	  API, it is possible that they do not have the same version
+	  of the JMX specification.  The version of the JMX
+	  specification described here is version 2.0.  Previous
+	  versions were 1.0, 1.1, 1.2, and 1.4.  (There was no 1.3.)
+	  The standard JMX Remote API is defined to work with version
+	  1.2 onwards, so in standards-based deployment the only
+	  interoperability questions that arise concern version 1.2
+	  onwards.</p>
+
+	<p>Every version of the JMX specification continues to
+	  implement the features of previous versions.  So when the
+	  client is running an earlier version than the server, there
+	  should not be any interoperability concerns.  The only
+	  exception is the unlikely one where a pre-2.0 client used
+	  the string {@code //} in the domain part of an {@link
+	  javax.management.ObjectName ObjectName}.</p>
+
+	<p>When the client is running a later version than the server,
+	  certain newer features may not be available, as detailed in
+	  the next sections.  The method {@link
+	  javax.management.JMX#getSpecificationVersion
+	  JMX.getSpecificationVersion} can be used to determine the
+	  server version to check if required features are
+	  available.</p>
+
+	<h4 id="interop-1.4">If the remote MBean Server is 1.4</h4>
+
+	<ul>
+
+	  <li><p>You cannot use {@link
+	      javax.management.QueryNotificationFilter
+	      QueryNotificationFilter} in {@link
+	      javax.management.MBeanServerConnection#addNotificationListener
+	      addNotificationListener} since this class did not exist
+	      in 1.4.</p>
+
+	  <li><p>In an attribute in a query, you cannot access values
+	      inside complex types using dot syntax, for example
+	      {@link javax.management.Query#attr Query.attr}{@code
+	      ("HeapMemoryUsage.used")}.</p>
+
+	  <li><p>The packages {@link javax.management.event} and
+	      {@link javax.management.namespace} did not exist in 1.4,
+	      so you cannot remotely create instances of the MBeans
+	      they define.</p>
+
+	  <li><p>Even if the remote MBean Server is 2.0, you cannot in
+	      general suppose that {@link
+	      javax.management.event.EventClient EventClient} or
+	      {@link javax.management.ClientContext ClientContext}
+	      will work there without first checking. If the remote
+	      MBean Server is 1.4 then those checks will return false.
+	      An attempt to use these features without checking will
+	      fail in the same way as for a remote 2.0 that is not
+	      configured to support them.</p>
+	</ul>
+
+	<h4 id="interop-1.2">If the remote MBean Server is 1.2</h4>
+
+	<p><b>In addition to the above</b>,</p>
+
+	<ul>
+
+	  <li><p>You cannot use wildcards in a key property of an
+	      {@link javax.management.ObjectName ObjectName}, for
+	      example {@code domain:type=Foo,name=*}. Wildcards that
+	      match whole properties are still allowed, for example
+	      {@code *:*} or {@code *:type=Foo,*}.</p>
+
+	  <li><p>You cannot use {@link
+	      javax.management.Query#isInstanceOf Query.isInstanceOf}
+	      in a query.</p>
+
+	  <li><p>You cannot use dot syntax such as {@code
+	      HeapMemoryUsage.used} in the {@linkplain
+	      javax.management.monitor.Monitor#setObservedAttribute
+	      observed attribute} of a monitor, as described in the
+	      documentation for the {@link javax.management.monitor}
+	      package.</p>
+
+	</ul>
+
         <p id="spec">
         @see <a href="{@docRoot}/../technotes/guides/jmx/index.html">
         Java SE 6 Platform documentation on JMX technology</a>
--- a/src/share/classes/javax/management/relation/MBeanServerNotificationFilter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/relation/MBeanServerNotificationFilter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -354,7 +354,7 @@
 
         // Checks the type first
         String ntfType = notif.getType();
-        Vector enabledTypes = getEnabledTypes();
+        Vector<String> enabledTypes = getEnabledTypes();
         if (!(enabledTypes.contains(ntfType))) {
             RELATION_LOGGER.logp(Level.FINER,
                     MBeanServerNotificationFilter.class.getName(),
@@ -464,8 +464,8 @@
         // Serializes this instance in the old serial form
         //
         ObjectOutputStream.PutField fields = out.putFields();
-        fields.put("mySelectObjNameList", (Vector)selectedNames);
-        fields.put("myDeselectObjNameList", (Vector)deselectedNames);
+        fields.put("mySelectObjNameList", selectedNames);
+        fields.put("myDeselectObjNameList", deselectedNames);
         out.writeFields();
       }
       else
--- a/src/share/classes/javax/management/relation/RelationService.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/relation/RelationService.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1111,7 +1111,7 @@
             throw new IllegalArgumentException(excMsg);
         }
 
-        if (!(oldValue instanceof ArrayList))
+        if (!(oldValue instanceof ArrayList<?>))
             oldValue = new ArrayList<ObjectName>(oldValue);
 
         RELATION_LOGGER.entering(RelationService.class.getName(),
@@ -1881,7 +1881,7 @@
                                          "getRole",
                                          params,
                                          signature));
-                if (invokeResult == null || invokeResult instanceof ArrayList)
+                if (invokeResult == null || invokeResult instanceof ArrayList<?>)
                     result = invokeResult;
                 else
                     result = new ArrayList<ObjectName>(invokeResult);
@@ -2786,7 +2786,7 @@
             // Note that it is possible that the MBean has already been removed
             // from the internal map: this is the case when the MBean is
             // unregistered, the role is updated, then we arrive here.
-            HashMap mbeanRefMap = (HashMap)
+            Map<String,List<String>> mbeanRefMap =
                 (myRefedMBeanObjName2RelIdsMap.get(objectName));
 
             if (mbeanRefMap == null) {
@@ -2796,11 +2796,11 @@
                 return true;
             }
 
-            ArrayList roleNames = new ArrayList();
+            List<String> roleNames = null;
             if (!allRolesFlag) {
                 // Now retrieves the roles of current relation where the MBean
                 // was referenced
-                roleNames = (ArrayList)(mbeanRefMap.get(relationId));
+                roleNames = mbeanRefMap.get(relationId);
 
                 // Removes obsolete reference to role
                 int obsRefIdx = roleNames.indexOf(roleName);
@@ -2840,8 +2840,8 @@
     //
     // -exception RelationServiceNotRegisteredException  if the Relation
     //  Service is not registered in the MBean Server.
-    private void updateUnregistrationListener(List newRefList,
-                                              List obsoleteRefList)
+    private void updateUnregistrationListener(List<ObjectName> newRefList,
+                                              List<ObjectName> obsoleteRefList)
         throws RelationServiceNotRegisteredException {
 
         if (newRefList != null && obsoleteRefList != null) {
@@ -2871,24 +2871,14 @@
 
                 // Enables ObjectNames in newRefList
                 if (newRefList != null) {
-                    for (Iterator newRefIter = newRefList.iterator();
-                         newRefIter.hasNext();) {
-
-                        ObjectName newObjName = (ObjectName)
-                            (newRefIter.next());
+                    for (ObjectName newObjName : newRefList)
                         myUnregNtfFilter.enableObjectName(newObjName);
-                    }
                 }
 
                 if (obsoleteRefList != null) {
                     // Disables ObjectNames in obsoleteRefList
-                    for (Iterator obsRefIter = obsoleteRefList.iterator();
-                         obsRefIter.hasNext();) {
-
-                        ObjectName obsObjName = (ObjectName)
-                            (obsRefIter.next());
+                    for (ObjectName obsObjName : obsoleteRefList)
                         myUnregNtfFilter.disableObjectName(obsObjName);
-                    }
                 }
 
 // Under test
@@ -3047,18 +3037,13 @@
         // to see which roles have not been initialized
         // Note: no need to test if list not null before cloning, not allowed
         //       to have an empty relation type.
-        ArrayList roleInfoList = (ArrayList)
-            (((ArrayList)(relType.getRoleInfos())).clone());
+        List<RoleInfo> roleInfoList = new ArrayList<RoleInfo>(relType.getRoleInfos());
 
         if (roleList != null) {
 
-            for (Iterator roleIter = roleList.iterator();
-                 roleIter.hasNext();) {
-
-                Role currRole = (Role)(roleIter.next());
+            for (Role currRole : roleList.asList()) {
                 String currRoleName = currRole.getRoleName();
-                ArrayList currRoleValue = (ArrayList)
-                    (currRole.getRoleValue());
+                List<ObjectName> currRoleValue = currRole.getRoleValue();
                 // Retrieves corresponding role info
                 // Can throw a RoleInfoNotFoundException to be converted into a
                 // RoleNotFoundException
@@ -3137,9 +3122,7 @@
         // Only role list parameter used, as default initialization of roles
         // done automatically in initializeMissingRoles() sets each
         // uninitialized role to an empty value.
-        for (Iterator roleIter = roleList.iterator();
-             roleIter.hasNext();) {
-            Role currRole = (Role)(roleIter.next());
+        for (Role currRole : roleList.asList()) {
             // Creates a dummy empty ArrayList of ObjectNames to be the old
             // role value :)
             List<ObjectName> dummyList = new ArrayList<ObjectName>();
@@ -3191,7 +3174,7 @@
     // -exception IllegalArgumentException  if null parameter
     private Integer checkRoleInt(int chkType,
                                  String roleName,
-                                 List roleValue,
+                                 List<ObjectName> roleValue,
                                  RoleInfo roleInfo,
                                  boolean writeChkFlag)
         throws IllegalArgumentException {
@@ -3266,9 +3249,7 @@
         // registered in the same MBean Server.
         String expClassName = roleInfo.getRefMBeanClassName();
 
-        for (Iterator refMBeanIter = roleValue.iterator();
-             refMBeanIter.hasNext();) {
-            ObjectName currObjName = (ObjectName)(refMBeanIter.next());
+        for (ObjectName currObjName : roleValue) {
 
             // Checks it is registered
             if (currObjName == null) {
@@ -3330,7 +3311,7 @@
                                         ObjectName relationObjName,
                                         String relationId,
                                         String relationTypeName,
-                                        List roleInfoList)
+                                        List<RoleInfo> roleInfoList)
         throws IllegalArgumentException,
                RelationServiceNotRegisteredException,
                InvalidRoleValueException {
@@ -3361,10 +3342,8 @@
         // with an empty list of ObjectNames.
         // A check is performed to verify that the role can be set to an
         // empty value, according to its minimum cardinality
-        for (Iterator roleInfoIter = roleInfoList.iterator();
-             roleInfoIter.hasNext();) {
-
-            RoleInfo currRoleInfo = (RoleInfo)(roleInfoIter.next());
+        for (RoleInfo currRoleInfo : roleInfoList) {
+
             String roleName = currRoleInfo.getName();
 
             // Creates an empty value
@@ -3663,7 +3642,7 @@
     //  not exist in the relation
     private void handleReferenceUnregistration(String relationId,
                                                ObjectName objectName,
-                                               List roleNameList)
+                                               List<String> roleNameList)
         throws IllegalArgumentException,
                RelationServiceNotRegisteredException,
                RelationNotFoundException,
@@ -3694,14 +3673,12 @@
         // Flag to specify if the relation has to be deleted
         boolean deleteRelFlag = false;
 
-        for (Iterator roleNameIter = roleNameList.iterator();
-             roleNameIter.hasNext();) {
+        for (String currRoleName : roleNameList) {
 
             if (deleteRelFlag) {
                 break;
             }
 
-            String currRoleName = (String)(roleNameIter.next());
             // Retrieves number of MBeans currently referenced in role
             // BEWARE! Do not use getRole() as role may be not readable
             //
@@ -3753,10 +3730,7 @@
             //         using setRole(). So the Relation Service will update the
             //         myRefedMBeanObjName2RelIdsMap to refelect the new role
             //         value!
-            for (Iterator roleNameIter = roleNameList.iterator();
-                 roleNameIter.hasNext();) {
-
-                String currRoleName = (String)(roleNameIter.next());
+            for (String currRoleName : roleNameList) {
 
                 if (relObj instanceof RelationSupport) {
                     // Internal relation
--- a/src/share/classes/javax/management/relation/RelationSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/relation/RelationSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -108,7 +108,7 @@
     //   via Relation Service setRole() and setRoles() methods
     // - if the relation is internal to the Relation Service, via
     //   setRoleInt() and setRolesInt() methods.
-    private Map<String,Role> myRoleName2ValueMap = new HashMap<String,Role>();
+    private final Map<String,Role> myRoleName2ValueMap = new HashMap<String,Role>();
 
     // Flag to indicate if the object has been added in the Relation Service
     private final AtomicBoolean myInRelServFlg = new AtomicBoolean();
@@ -424,7 +424,7 @@
             }
         }
 
-        ArrayList roleValue = (ArrayList)(role.getRoleValue());
+        List<ObjectName> roleValue = role.getRoleValue();
 
         RELATION_LOGGER.exiting(RelationSupport.class.getName(),
                 "getRoleCardinality");
@@ -855,8 +855,7 @@
                 // Note: no need to test if role value (list) not null before
                 //       cloning, null value not allowed, empty list if
                 //       nothing.
-                result = (ArrayList)
-                    (((ArrayList)(role.getRoleValue())).clone());
+                result = new ArrayList<ObjectName>(role.getRoleValue());
 
             } else {
                 // Role retrieved during multi-role retrieval: returns the
@@ -1492,10 +1491,7 @@
         RoleList roleList = new RoleList();
         RoleUnresolvedList roleUnresList = new RoleUnresolvedList();
 
-        for (Iterator roleIter = list.iterator();
-             roleIter.hasNext();) {
-
-            Role currRole = (Role)(roleIter.next());
+        for (Role currRole : list.asList()) {
 
             Object currResult = null;
             // Can throw:
@@ -1617,12 +1613,10 @@
 
         synchronized(myRoleName2ValueMap) {
 
-            for (Iterator roleIter = list.iterator();
-                 roleIter.hasNext();) {
+            for (Role currRole : list.asList()) {
 
                 // No need to check if role is null, it is not allowed to store
                 // a null role in a RoleList :)
-                Role currRole = (Role)(roleIter.next());
                 String currRoleName = currRole.getRoleName();
 
                 if (myRoleName2ValueMap.containsKey(currRoleName)) {
--- a/src/share/classes/javax/management/relation/Role.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/relation/Role.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -228,9 +228,9 @@
     public String toString() {
         StringBuilder result = new StringBuilder();
         result.append("role name: " + name + "; role value: ");
-        for (Iterator objNameIter = objectNameList.iterator();
+        for (Iterator<ObjectName> objNameIter = objectNameList.iterator();
              objNameIter.hasNext();) {
-            ObjectName currObjName = (ObjectName)(objNameIter.next());
+            ObjectName currObjName = objNameIter.next();
             result.append(currObjName.toString());
             if (objNameIter.hasNext()) {
                 result.append(", ");
@@ -325,7 +325,7 @@
         //
         ObjectOutputStream.PutField fields = out.putFields();
         fields.put("myName", name);
-        fields.put("myObjNameList", (ArrayList)objectNameList);
+        fields.put("myObjNameList", objectNameList);
         out.writeFields();
       }
       else
--- a/src/share/classes/javax/management/relation/RoleList.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/relation/RoleList.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -25,6 +25,7 @@
 
 package javax.management.relation;
 
+import com.sun.jmx.mbeanserver.Util;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -140,7 +141,7 @@
                 checkTypeSafe(this);
             typeSafe = true;
         }
-        return (List<Role>) (List) this;
+        return Util.cast(this);
     }
 
     //
--- a/src/share/classes/javax/management/relation/RoleResult.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/relation/RoleResult.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -172,7 +172,7 @@
 
             roleList = new RoleList();
 
-            for (Iterator roleIter = list.iterator();
+            for (Iterator<?> roleIter = list.iterator();
                  roleIter.hasNext();) {
                 Role currRole = (Role)(roleIter.next());
                 roleList.add((Role)(currRole.clone()));
@@ -195,7 +195,7 @@
 
             unresolvedRoleList = new RoleUnresolvedList();
 
-            for (Iterator roleUnresIter = unresolvedList.iterator();
+            for (Iterator<?> roleUnresIter = unresolvedList.iterator();
                  roleUnresIter.hasNext();) {
                 RoleUnresolved currRoleUnres =
                     (RoleUnresolved)(roleUnresIter.next());
--- a/src/share/classes/javax/management/relation/RoleUnresolved.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/relation/RoleUnresolved.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -285,9 +285,9 @@
         result.append("role name: " + roleName);
         if (roleValue != null) {
             result.append("; value: ");
-            for (Iterator objNameIter = roleValue.iterator();
+            for (Iterator<ObjectName> objNameIter = roleValue.iterator();
                  objNameIter.hasNext();) {
-                ObjectName currObjName = (ObjectName)(objNameIter.next());
+                ObjectName currObjName = objNameIter.next();
                 result.append(currObjName.toString());
                 if (objNameIter.hasNext()) {
                     result.append(", ");
@@ -344,7 +344,7 @@
         //
         ObjectOutputStream.PutField fields = out.putFields();
         fields.put("myRoleName", roleName);
-        fields.put("myRoleValue", (ArrayList)roleValue);
+        fields.put("myRoleValue", roleValue);
         fields.put("myPbType", problemType);
         out.writeFields();
       }
--- a/src/share/classes/javax/management/relation/RoleUnresolvedList.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/relation/RoleUnresolvedList.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -25,6 +25,7 @@
 
 package javax.management.relation;
 
+import com.sun.jmx.mbeanserver.Util;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -140,7 +141,7 @@
                 checkTypeSafe(this);
             typeSafe = true;
         }
-        return (List<RoleUnresolved>) (List) this;
+        return Util.cast(this);
     }
 
     //
--- a/src/share/classes/javax/management/remote/JMXConnectorFactory.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/JMXConnectorFactory.java	Thu Jan 29 18:33:52 2009 -0800
@@ -322,10 +322,12 @@
                 JMXConnectorProvider.class;
         final String protocol = serviceURL.getProtocol();
         final String providerClassName = "ClientProvider";
+        final JMXServiceURL providerURL = serviceURL;
 
-        JMXConnectorProvider provider =
-            getProvider(serviceURL, envcopy, providerClassName,
-                        targetInterface, loader);
+        JMXConnectorProvider provider = getProvider(providerURL, envcopy,
+                                               providerClassName,
+                                               targetInterface,
+                                               loader);
 
         IOException exception = null;
         if (provider == null) {
@@ -336,7 +338,7 @@
             if (loader != null) {
                 try {
                     JMXConnector connection =
-                        getConnectorAsService(loader, serviceURL, envcopy);
+                        getConnectorAsService(loader, providerURL, envcopy);
                     if (connection != null)
                         return connection;
                 } catch (JMXProviderException e) {
@@ -345,8 +347,7 @@
                     exception = e;
                 }
             }
-            provider =
-                getProvider(protocol, PROTOCOL_PROVIDER_DEFAULT_PACKAGE,
+            provider = getProvider(protocol, PROTOCOL_PROVIDER_DEFAULT_PACKAGE,
                             JMXConnectorFactory.class.getClassLoader(),
                             providerClassName, targetInterface);
         }
@@ -367,7 +368,8 @@
         return provider.newJMXConnector(serviceURL, fixedenv);
     }
 
-    private static String resolvePkgs(Map env) throws JMXProviderException {
+    private static String resolvePkgs(Map<String, ?> env)
+            throws JMXProviderException {
 
         Object pkgsObject = null;
 
@@ -447,9 +449,10 @@
                 getProviderIterator(JMXConnectorProvider.class, loader);
         JMXConnector connection;
         IOException exception = null;
-        while(providers.hasNext()) {
+        while (providers.hasNext()) {
+            JMXConnectorProvider provider = providers.next();
             try {
-                connection = providers.next().newJMXConnector(url, map);
+                connection = provider.newJMXConnector(url, map);
                 return connection;
             } catch (JMXProviderException e) {
                 throw e;
@@ -521,7 +524,7 @@
         return null;
     }
 
-    static ClassLoader resolveClassLoader(Map environment) {
+    static ClassLoader resolveClassLoader(Map<String, ?> environment) {
         ClassLoader loader = null;
 
         if (environment != null) {
@@ -552,4 +555,5 @@
     private static String protocol2package(String protocol) {
         return protocol.replace('+', '.').replace('-', '_');
     }
+
 }
--- a/src/share/classes/javax/management/remote/JMXConnectorServer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/JMXConnectorServer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -33,6 +33,7 @@
 import java.util.Map;
 
 import java.util.NoSuchElementException;
+import javax.management.ClientContext;
 import javax.management.MBeanInfo;  // for javadoc
 import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanRegistration;
@@ -103,6 +104,56 @@
 
      /**
       * <p>Name of the attribute that specifies whether this connector
+      * server allows clients to communicate a context with each request.
+      * The value associated with this attribute, if any, must be a string
+      * that is equal to {@code "true"} or {@code "false"}, ignoring case.
+      * If it is {@code "true"}, then the connector server will simulate
+      * a namespace {@code jmx.context//}, as described in
+      * {@link ClientContext#newContextForwarder}.  This namespace is needed
+      * for {@link ClientContext#withContext ClientContext.withContext} to
+      * function correctly.</p>
+      *
+      * <p>Not all connector servers will understand this attribute, but the
+      * standard {@linkplain javax.management.remote.rmi.RMIConnectorServer
+      * RMI Connector Server} does.  For a connector server that understands
+      * this attribute, the default value is {@code "true"}.</p>
+      *
+      * @since 1.7
+      */
+     public static final String CONTEXT_FORWARDER =
+         "jmx.remote.context.forwarder";
+
+     /**
+      * <p>Name of the attribute that specifies whether this connector server
+      * localizes the descriptions in the {@link MBeanInfo} object returned by
+      * {@link MBeanServer#getMBeanInfo MBeanServer.getMBeanInfo}, based on the
+      * locale communicated by the client.</p>
+      *
+      * <p>The value associated with this attribute, if any, must be a string
+      * that is equal to {@code "true"} or {@code "false"}, ignoring case.
+      * If it is {@code "true"}, then the connector server will localize
+      * {@code MBeanInfo} descriptions as specified in {@link
+      * ClientContext#newLocalizeMBeanInfoForwarder}.</p>
+      *
+      * <p>Not all connector servers will understand this attribute, but the
+      * standard {@linkplain javax.management.remote.rmi.RMIConnectorServer
+      * RMI Connector Server} does.  For a connector server that understands
+      * this attribute, the default value is {@code "false"}.</p>
+      *
+      * <p>Because localization requires the client to be able to communicate
+      * its locale, it does not make sense to specify this attribute as
+      * {@code "true"} if {@link #CONTEXT_FORWARDER} is not also {@code "true"}.
+      * For a connector server that understands these attributes, specifying
+      * this inconsistent combination will result in an {@link
+      * IllegalArgumentException}.</p>
+      *
+      * @since 1.7
+      */
+     public static final String LOCALIZE_MBEAN_INFO_FORWARDER =
+        "jmx.remote.localize.mbean.info";
+
+     /**
+      * <p>Name of the attribute that specifies whether this connector
       * server simulates the existence of the {@link EventClientDelegate}
       * MBean. The value associated with this attribute, if any, must
       * be a string that is equal to {@code "true"} or {@code "false"},
@@ -155,7 +206,7 @@
      * to, or null if it is not yet attached to an MBean server.
      *
      * @see #setMBeanServerForwarder
-     * @see #getSystemMBeanServer
+     * @see #getSystemMBeanServerForwarder
      */
     public synchronized MBeanServer getMBeanServer() {
         return userMBeanServer;
@@ -176,30 +227,36 @@
      * this method, the first occurrence in the chain of an object that is
      * {@linkplain Object#equals equal} to {@code mbsf} will have been
      * removed.</p>
+     *
      * @param mbsf the forwarder to remove
+     *
      * @throws NoSuchElementException if there is no occurrence of {@code mbsf}
      * in the chain.
-     * @throws IllegalArgumentException if {@code mbsf} is null.
+     * @throws IllegalArgumentException if {@code mbsf} is null or is the
+     * {@linkplain #getSystemMBeanServerForwarder() system forwarder}.
+     *
+     * @since 1.7
      */
     public synchronized void removeMBeanServerForwarder(MBeanServerForwarder mbsf) {
         if (mbsf == null)
             throw new IllegalArgumentException("Invalid null argument: mbsf");
+        if (systemMBeanServerForwarder.equals(mbsf))
+            throw new IllegalArgumentException("Cannot remove system forwarder");
 
-        MBeanServerForwarder prev = null;
-        MBeanServer curr = systemMBeanServer;
-        while (curr instanceof MBeanServerForwarder && !mbsf.equals(curr)) {
-            prev = (MBeanServerForwarder) curr;
+        MBeanServerForwarder prev = systemMBeanServerForwarder;
+        MBeanServer curr;
+        while (true) {
             curr = prev.getMBeanServer();
+            if (mbsf.equals(curr))
+                break;
+            if (curr instanceof MBeanServerForwarder)
+                prev = (MBeanServerForwarder) curr;
+            else
+                throw new NoSuchElementException("MBeanServerForwarder not in chain");
         }
-        if (!(curr instanceof MBeanServerForwarder))
-            throw new NoSuchElementException("MBeanServerForwarder not in chain");
-        MBeanServerForwarder deleted = (MBeanServerForwarder) curr;
-        MBeanServer next = deleted.getMBeanServer();
-        if (prev != null)
-            prev.setMBeanServer(next);
-        if (systemMBeanServer == deleted)
-            systemMBeanServer = next;
-        if (userMBeanServer == deleted)
+        MBeanServer next = mbsf.getMBeanServer();
+        prev.setMBeanServer(next);
+        if (userMBeanServer == mbsf)
             userMBeanServer = next;
     }
 
@@ -209,66 +266,63 @@
      * the systemMBeanServer and userMBeanServer field declarations.
      */
     private void insertUserMBeanServer(MBeanServer mbs) {
-        MBeanServerForwarder lastSystemMBSF = null;
-        for (MBeanServer mbsi = systemMBeanServer;
-             mbsi != userMBeanServer;
-             mbsi = lastSystemMBSF.getMBeanServer()) {
+        MBeanServerForwarder lastSystemMBSF = systemMBeanServerForwarder;
+        while (true) {
+            MBeanServer mbsi = lastSystemMBSF.getMBeanServer();
+            if (mbsi == userMBeanServer)
+                break;
             lastSystemMBSF = (MBeanServerForwarder) mbsi;
         }
         userMBeanServer = mbs;
-        if (lastSystemMBSF == null)
-            systemMBeanServer = mbs;
-        else
-            lastSystemMBSF.setMBeanServer(mbs);
+        lastSystemMBSF.setMBeanServer(mbs);
     }
 
     /**
      * <p>Returns the first item in the chain of system and then user
-     * forwarders.  In the simplest case, a {@code JMXConnectorServer}
-     * is connected directly to an {@code MBeanServer}.  But there can
-     * also be a chain of {@link MBeanServerForwarder}s between the two.
-     * This chain consists of two sub-chains: first the <em>system chain</em>
-     * and then the <em>user chain</em>.  Incoming requests are given to the
-     * first forwarder in the system chain.  Each forwarder can handle
-     * a request itself, or more usually forward it to the next forwarder,
-     * perhaps with some extra behavior such as logging or security
-     * checking before or after the forwarding.  The last forwarder in
-     * the system chain is followed by the first forwarder in the user
-     * chain.</p>
+     * forwarders.  There is a chain of {@link MBeanServerForwarder}s between
+     * a {@code JMXConnectorServer} and its {@code MBeanServer}.  This chain
+     * consists of two sub-chains: first the <em>system chain</em> and then
+     * the <em>user chain</em>.  Incoming requests are given to the first
+     * forwarder in the system chain.  Each forwarder can handle a request
+     * itself, or more usually forward it to the next forwarder, perhaps with
+     * some extra behavior such as logging or security checking before or after
+     * the forwarding.  The last forwarder in the system chain is followed by
+     * the first forwarder in the user chain.</p>
+     *
+     * <p>The object returned by this method is the first forwarder in the
+     * system chain.  For a given {@code JMXConnectorServer}, this method
+     * always returns the same object, which simply forwards every request
+     * to the next object in the chain.</p>
      *
-     * <p>The <em>system chain</em> is usually
-     * defined by a connector server based on the environment Map;
-     * see {@link JMXConnectorServerFactory#newJMXConnectorServer}.  Allowing the
-     * connector server to define its forwarders in this way ensures that
-     * they are in the correct order - some forwarders need to be inserted
-     * before others for correct behavior.  It is possible to modify the
-     * system chain, for example using {@link #setSystemMBeanServerForwarder} or
-     * {@link #removeMBeanServerForwarder}, but in that case the system
-     * chain is no longer guaranteed to be correct.</p>
+     * <p>Not all connector servers support a system chain of forwarders,
+     * although the standard {@linkplain
+     * javax.management.remote.rmi.RMIConnectorServer RMI connector
+     * server} does.  For those that do not, this method will throw {@code
+     * UnsupportedOperationException}.  All
+     * connector servers do support a user chain of forwarders.</p>
+     *
+     * <p>The <em>system chain</em> is usually defined by a
+     * connector server based on the environment Map; see {@link
+     * JMXConnectorServerFactory#newJMXConnectorServer
+     * JMXConnectorServerFactory.newJMXConnectorServer}.  Allowing
+     * the connector server to define its forwarders in this way
+     * ensures that they are in the correct order - some forwarders
+     * need to be inserted before others for correct behavior.  It is
+     * possible to modify the system chain, for example using {@code
+     * connectorServer.getSystemMBeanServerForwarder().setMBeanServer(mbsf)} or
+     * {@link #removeMBeanServerForwarder removeMBeanServerForwarder}, but in
+     * that case the system chain is no longer guaranteed to be correct.</p>
      *
      * <p>The <em>user chain</em> is defined by calling {@link
-     * #setMBeanServerForwarder} to insert forwarders at the head of the user
-     * chain.</p>
-     *
-     * <p>If there are no forwarders in either chain, then both
-     * {@link #getMBeanServer()} and {@code getSystemMBeanServer()} will
-     * return the {@code MBeanServer} for this connector server.  If there
-     * are forwarders in the user chain but not the system chain, then
-     * both methods will return the first forwarder in the user chain.
-     * If there are forwarders in the system chain but not the user chain,
-     * then {@code getSystemMBeanServer()} will return the first forwarder
-     * in the system chain, and {@code getMBeanServer()} will return the
-     * {@code MBeanServer} for this connector server.  Finally, if there
-     * are forwarders in each chain then {@code getSystemMBeanServer()}
-     * will return the first forwarder in the system chain, and {@code
-     * getMBeanServer()} will return the first forwarder in the user chain.</p>
+     * #setMBeanServerForwarder setMBeanServerForwarder} to insert forwarders
+     * at the head of the user chain.</p>
      *
      * <p>This code illustrates how the chains can be traversed:</p>
      *
      * <pre>
      * JMXConnectorServer cs;
      * System.out.println("system chain:");
-     * MBeanServer mbs = cs.getSystemMBeanServer();
+     * MBeanServer mbs = cs.getSystemMBeanServerForwarder();
      * while (true) {
      *     if (mbs == cs.getMBeanServer())
      *         System.out.println("user chain:");
@@ -281,65 +335,40 @@
      * System.out.println("--MBean Server");
      * </pre>
      *
+     * <h4>Note for connector server implementors</h4>
+     *
+     * <p>Existing connector server implementations can be updated to support
+     * a system chain of forwarders as follows:</p>
+     *
+     * <ul>
+     * <li><p>Override the {@link #supportsSystemMBeanServerForwarder()}
+     * method so that it returns true.</p>
+     *
+     * <li><p>Call {@link #installStandardForwarders} from the constructor of
+     * the connector server.</p>
+     *
+     * <li><p>Direct incoming requests to the result of {@link
+     * #getSystemMBeanServerForwarder()} instead of the result of {@link
+     * #getMBeanServer()}.</p>
+     * </ul>
+     *
      * @return the first item in the system chain of forwarders.
      *
-     * @see #setSystemMBeanServerForwarder
-     */
-    public synchronized MBeanServer getSystemMBeanServer() {
-        return systemMBeanServer;
-    }
-
-    /**
-     * <p>Inserts an object that intercepts requests for the MBean server
-     * that arrive through this connector server.  This object will be
-     * supplied as the <code>MBeanServer</code> for any new connection
-     * created by this connector server.  Existing connections are
-     * unaffected.</p>
+     * @throws UnsupportedOperationException if {@link
+     * #supportsSystemMBeanServerForwarder} returns false.
      *
-     * <p>This method can be called more than once with different
-     * {@link MBeanServerForwarder} objects.  The result is a chain
-     * of forwarders.  The last forwarder added is the first in the chain.</p>
-     *
-     * <p>This method modifies the system chain of {@link MBeanServerForwarder}s.
-     * Usually user code should change the user chain instead, via
-     * {@link #setMBeanServerForwarder}.</p>
-     *
-     * <p>Not all connector servers support a system chain of forwarders.
-     * Calling this method on a connector server that does not will produce an
-     * {@link UnsupportedOperationException}.</p>
+     * @see #supportsSystemMBeanServerForwarder
+     * @see #setMBeanServerForwarder
      *
-     * <p>Suppose {@code mbs} is the result of {@link #getSystemMBeanServer()}
-     * before calling this method.  If {@code mbs} is not null, then
-     * {@code mbsf.setMBeanServer(mbs)} will be called.  If doing so
-     * produces an exception, this method throws the same exception without
-     * any other effect.  If {@code mbs} is null, or if the call to
-     * {@code mbsf.setMBeanServer(mbs)} succeeds, then this method will
-     * return normally and {@code getSystemMBeanServer()} will then return
-     * {@code mbsf}.</p>
-     *
-     * <p>The result of {@link #getMBeanServer()} is unchanged by this method.</p>
-     *
-     * @param mbsf the new <code>MBeanServerForwarder</code>.
-     *
-     * @throws IllegalArgumentException if the call to {@link
-     * MBeanServerForwarder#setMBeanServer mbsf.setMBeanServer} fails
-     * with <code>IllegalArgumentException</code>, or if
-     * <code>mbsf</code> is null.
-     *
-     * @throws UnsupportedOperationException if
-     * {@link #supportsSystemMBeanServerForwarder} returns false.
-     *
-     * @see #getSystemMBeanServer()
+     * @since 1.7
      */
-    public synchronized void setSystemMBeanServerForwarder(
-            MBeanServerForwarder mbsf) {
-        if (mbsf == null)
-            throw new IllegalArgumentException("Invalid null argument: mbsf");
-        mustSupportSystemMBSF();
-
-        if (systemMBeanServer != null)
-            mbsf.setMBeanServer(systemMBeanServer);
-        systemMBeanServer = mbsf;
+    public MBeanServerForwarder getSystemMBeanServerForwarder() {
+        if (!supportsSystemMBeanServerForwarder()) {
+            throw new UnsupportedOperationException(
+                    "System MBeanServerForwarder not supported by this " +
+                    "connector server");
+        }
+        return systemMBeanServerForwarder;
     }
 
     /**
@@ -350,17 +379,39 @@
      *
      * @return true if this connector server supports the system chain of
      * forwarders.
+     *
+     * @since 1.7
      */
     public boolean supportsSystemMBeanServerForwarder() {
         return false;
     }
 
-    private void mustSupportSystemMBSF() {
-        if (!supportsSystemMBeanServerForwarder()) {
-            throw new UnsupportedOperationException(
-                    "System MBeanServerForwarder not supported by this " +
-                    "connector server");
-        }
+    /**
+     * Closes a client connection. If the connection is successfully closed,
+     * the method {@link #connectionClosed} is called to notify interested parties.
+     * <P>Not all connector servers support this method. For those that do, it
+     * should be possible to cause a new client connection to fail before it
+     * can be used, by calling this method from within a
+     * {@link javax.management.NotificationListener}
+     * when it receives a {@link JMXConnectionNotification#OPENED} notification.
+     * This allows the owner of a connector server to deny certain connections,
+     * typically based on the information in the connection id.
+     * <P>The implementation of this method in {@code JMXConnectorServer} throws
+     * {@code UnsupportedOperationException}. Subclasses can override this
+     * method to support closing a specified client connection.
+     *
+     * @param connectionId the id of the client connection to be closed.
+     * @throws IllegalStateException if the server is not started or is closed.
+     * @throws IllegalArgumentException if {@code connectionId} is null or is
+     * not the id of any open connection.
+     * @throws java.io.IOException if an I/O error appears when closing the
+     * connection.
+     *
+     * @since 1.7
+     */
+    public void closeConnection(String connectionId)
+            throws IOException {
+        throw new UnsupportedOperationException();
     }
 
     /**
@@ -374,34 +425,90 @@
      * <ul>
      *
      * <li>If {@link #EVENT_CLIENT_DELEGATE_FORWARDER} is absent, or is
-     * present with the value {@code "true"}, then a forwarder with the
-     * functionality of {@link EventClientDelegate#newForwarder} is inserted
-     * at the start of the system chain.</li>
+     * present with the value {@code "true"}, then a forwarder
+     * equivalent to {@link EventClientDelegate#newForwarder
+     * EventClientDelegate.newForwarder}{@code (sysMBSF.getMBeanServer(),
+     * sysMBSF)} is inserted at the start of the system chain,
+     * where {@code sysMBSF} is the object returned by {@link
+     * #getSystemMBeanServerForwarder()}. </li>
+     *
+     * <li>If {@link #LOCALIZE_MBEAN_INFO_FORWARDER} is present with the
+     * value {@code "true"}, then a forwarder equivalent to
+     * {@link ClientContext#newLocalizeMBeanInfoForwarder
+     * ClientContext.newLocalizeMBeanInfoForwarder}{@code
+     * (sysMBSF.getMBeanServer())} is inserted at the start of the system
+     * chain.</li>
+     *
+     * <li>If {@link #CONTEXT_FORWARDER} is absent, or is present with
+     * the value {@code "true"}, then a forwarder equivalent to
+     * {@link ClientContext#newContextForwarder
+     * ClientContext.newContextForwarder}{@code (sysMSBF.getMBeanServer(),
+     * sysMBSF)} is inserted at the tart of the system chain.</li>
      *
      * </ul>
      *
-     * <p>For {@code EVENT_CLIENT_DELEGATE_FORWARDER}, if the
-     * attribute is absent from the {@code Map} and a system property
-     * of the same name is defined, then the value of the system
-     * property is used as if it were in the {@code Map}.
+     * <p>For {@code EVENT_CLIENT_DELEGATE_FORWARDER} and {@code
+     * CONTEXT_FORWARDER}, if the attribute is absent from the {@code
+     * Map} and a system property of the same name is defined, then
+     * the value of the system property is used as if it were in the
+     * {@code Map}.
+     *
+     * <p>Since each forwarder is inserted at the start of the chain,
+     * the final order of the forwarders is the <b>reverse</b> of the order
+     * above.  This is important, because the {@code
+     * LOCALIZE_MBEAN_INFO_FORWARDER} can only work if the {@code
+     * CONTEXT_FORWARDER} has already installed the remote client's locale
+     * in the {@linkplain ClientContext#getContext context} of the current
+     * thread.</p>
      *
      * <p>Attributes in {@code env} that are not listed above are ignored
      * by this method.</p>
      *
      * @throws UnsupportedOperationException if {@link
      * #supportsSystemMBeanServerForwarder} is false.
+     *
+     * @throws IllegalArgumentException if the relevant attributes in {@code env} are
+     * inconsistent, for example if {@link #LOCALIZE_MBEAN_INFO_FORWARDER} is
+     * {@code "true"} but {@link #CONTEXT_FORWARDER} is {@code "false"}; or
+     * if one of the attributes has an illegal value.
+     *
+     * @since 1.7
      */
     protected void installStandardForwarders(Map<String, ?> env) {
-        mustSupportSystemMBSF();
+        MBeanServerForwarder sysMBSF = getSystemMBeanServerForwarder();
 
         // Remember that forwarders must be added in reverse order!
 
         boolean ecd = EnvHelp.computeBooleanFromString(
                 env, EVENT_CLIENT_DELEGATE_FORWARDER, false, true);
+        boolean localize = EnvHelp.computeBooleanFromString(
+                env, LOCALIZE_MBEAN_INFO_FORWARDER, false, false);
+        boolean context = EnvHelp.computeBooleanFromString(
+                env, CONTEXT_FORWARDER, false, true);
+
+        if (localize && !context) {
+            throw new IllegalArgumentException(
+                    "Inconsistent environment parameters: " +
+                    LOCALIZE_MBEAN_INFO_FORWARDER + "=\"true\" requires " +
+                    CONTEXT_FORWARDER + "=\"true\"");
+        }
 
         if (ecd) {
-            MBeanServerForwarder mbsf = EventClientDelegate.newForwarder();
-            setSystemMBeanServerForwarder(mbsf);
+            MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(
+                    sysMBSF.getMBeanServer(), sysMBSF);
+            sysMBSF.setMBeanServer(mbsf);
+        }
+
+        if (localize) {
+            MBeanServerForwarder mbsf = ClientContext.newLocalizeMBeanInfoForwarder(
+                    sysMBSF.getMBeanServer());
+            sysMBSF.setMBeanServer(mbsf);
+        }
+
+        if (context) {
+            MBeanServerForwarder mbsf = ClientContext.newContextForwarder(
+                    sysMBSF.getMBeanServer(), sysMBSF);
+            sysMBSF.setMBeanServer(mbsf);
         }
     }
 
@@ -473,6 +580,7 @@
      *
      * @return the array of possible notifications.
      */
+    @Override
     public MBeanNotificationInfo[] getNotificationInfo() {
         final String[] types = {
             JMXConnectionNotification.OPENED,
@@ -684,30 +792,29 @@
      * Fields describing the chains of forwarders (MBeanServerForwarders).
      * In the general case, the forwarders look something like this:
      *
-     * systemMBeanServer          userMBeanServer
-     * |                          |
-     * v                          v
-     * mbsf1 -> mbsf2 -> mbsf3 -> mbsf4 -> mbsf5 -> mbs
+     *                                        userMBeanServer
+     *                                        |
+     *                                        v
+     * systemMBeanServerForwarder -> mbsf2 -> mbsf3 -> mbsf4 -> mbsf5 -> mbs
      *
      * Here, each mbsfi is an MBeanServerForwarder, and the arrows
      * illustrate its getMBeanServer() method.  The last MBeanServerForwarder
      * can point to an MBeanServer that is not instanceof MBeanServerForwarder,
      * here mbs.
      *
-     * Initially, the chain can be empty if this JMXConnectorServer was
-     * constructed without an MBeanServer.  In this case, both systemMBS
-     * and userMBS will be null.  If there is initially an MBeanServer,
-     * then both systemMBS and userMBS will point to it.
+     * The system chain is never empty because it always has at least
+     * systemMBeanServerForwarder.  Initially, the user chain can be empty if
+     * this JMXConnectorServer was constructed without an MBeanServer.  In
+     * this case, userMBS will be null.  If there is initially an MBeanServer,
+     * userMBS will point to it.
      *
-     * Whenever userMBS is changed, the system chain must be updated. If there
-     * are forwarders in the system chain (between systemMBS and userMBS in the
-     * picture above), then the last one must point to the old value of userMBS
-     * (possibly null). It must be updated to point to the new value. If there
-     * are no forwarders in the system chain, then systemMBS must be updated to
-     * the new value of userMBS. The invariant is that starting from systemMBS
-     * and repeatedly calling MBSF.getMBeanServer() you will end up at
-     * userMBS.  The implication is that you will not see any MBeanServer
-     * object on the way that is not also an MBeanServerForwarder.
+     * Whenever userMBS is changed, the system chain must be updated.  Before
+     * the update, the last forwarder in the system chain points to the old
+     * value of userMBS (possibly null).  It must be updated to point to
+     * the new value. The invariant is that starting from systemMBSF and
+     * repeatedly calling MBSF.getMBeanServer() you will end up at userMBS.
+     * The implication is that you will not see any MBeanServer object on the
+     * way that is not also an MBeanServerForwarder.
      *
      * The method insertUserMBeanServer contains the logic to change userMBS
      * and adjust the system chain appropriately.
@@ -716,7 +823,7 @@
      * MBeanServer, then userMBS becomes that MBeanServer, and the system
      * chain must be updated as just described.
      *
-     * When systemMBS is updated, there is no effect on userMBS. The system
+     * When systemMBSF is updated, there is no effect on userMBS. The system
      * chain may contain forwarders even though the user chain is empty
      * (there is no MBeanServer). In that case an attempt to forward an
      * incoming request through the chain will fall off the end and fail with a
@@ -726,7 +833,8 @@
 
     private MBeanServer userMBeanServer;
 
-    private MBeanServer systemMBeanServer;
+    private final MBeanServerForwarder systemMBeanServerForwarder =
+            new IdentityMBeanServerForwarder();
 
     /**
      * The name used to registered this server in an MBeanServer.
--- a/src/share/classes/javax/management/remote/JMXConnectorServerMBean.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/JMXConnectorServerMBean.java	Thu Jan 29 18:33:52 2009 -0800
@@ -132,7 +132,7 @@
      *
      * <p>A connector server may support two chains of forwarders,
      * a system chain and a user chain.  See {@link
-     * JMXConnectorServer#setSystemMBeanServerForwarder} for details.</p>
+     * JMXConnectorServer#getSystemMBeanServerForwarder} for details.</p>
      *
      * @param mbsf the new <code>MBeanServerForwarder</code>.
      *
@@ -141,7 +141,7 @@
      * with <code>IllegalArgumentException</code>.  This includes the
      * case where <code>mbsf</code> is null.
      *
-     * @see JMXConnectorServer#setSystemMBeanServerForwarder
+     * @see JMXConnectorServer#getSystemMBeanServerForwarder
      */
     public void setMBeanServerForwarder(MBeanServerForwarder mbsf);
 
--- a/src/share/classes/javax/management/remote/rmi/NoCallStackClassLoader.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/rmi/NoCallStackClassLoader.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -118,7 +118,8 @@
      * if it is one of the classes whose byte code we have, or
      * delegate the load if it is one of the referenced classes.
      */
-    protected Class findClass(String name) throws ClassNotFoundException {
+    @Override
+    protected Class<?> findClass(String name) throws ClassNotFoundException {
         for (int i = 0; i < classNames.length; i++) {
             if (name.equals(classNames[i])) {
                 return defineClass(classNames[i], byteCodes[i], 0,
--- a/src/share/classes/javax/management/remote/rmi/RMIConnection.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/rmi/RMIConnection.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
@@ -31,7 +31,6 @@
 import java.rmi.Remote;
 import java.util.Set;
 
-import javax.management.Attribute;
 import javax.management.AttributeList;
 import javax.management.AttributeNotFoundException;
 import javax.management.InstanceAlreadyExistsException;
@@ -45,11 +44,11 @@
 import javax.management.MBeanServerConnection;
 import javax.management.NotCompliantMBeanException;
 
-import javax.management.NotificationFilter;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
-import javax.management.QueryExp;
 import javax.management.ReflectionException;
+import javax.management.RuntimeMBeanException;
+import javax.management.RuntimeOperationsException;
 import javax.management.remote.NotificationResult;
 import javax.security.auth.Subject;
 
@@ -89,8 +88,9 @@
  * even though it would add useful information to the documentation.  The
  * reason is that it was only added in Mustang (Java SE 6), whereas versions
  * 1.4 and 2.0 of the JMX API must be implementable on Tiger per our
- * commitments for JSR 255.
+ * commitments for JSR 255.  This is also why we suppress rawtypes warnings.
  */
+@SuppressWarnings("rawtypes")
 public interface RMIConnection extends Closeable, Remote {
     /**
      * <p>Returns the connection ID.  This string is different for
--- a/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -308,6 +308,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public ObjectInstance createMBean(String className,
                                       ObjectName name,
                                       MarshalledObject params,
@@ -368,6 +369,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public ObjectInstance createMBean(String className,
                                  ObjectName name,
                                  ObjectName loaderName,
@@ -493,6 +495,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public Set<ObjectInstance>
         queryMBeans(ObjectName name,
                     MarshalledObject query,
@@ -527,6 +530,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public Set<ObjectName>
         queryNames(ObjectName name,
                    MarshalledObject query,
@@ -668,6 +672,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public void setAttribute(ObjectName name,
                              MarshalledObject attribute,
                              Subject delegationSubject)
@@ -720,6 +725,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public AttributeList setAttributes(ObjectName name,
                          MarshalledObject attributes,
                          Subject delegationSubject)
@@ -765,6 +771,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public Object invoke(ObjectName name,
                          String operationName,
                          MarshalledObject params,
@@ -928,6 +935,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public Integer[] addNotificationListeners(ObjectName[] names,
                       MarshalledObject[] filters,
                       Subject[] delegationSubjects)
@@ -1013,6 +1021,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public void addNotificationListener(ObjectName name,
                        ObjectName listener,
                        MarshalledObject filter,
@@ -1148,6 +1157,7 @@
         }
     }
 
+    @SuppressWarnings("rawtypes")  // MarshalledObject
     public void removeNotificationListener(ObjectName name,
                         ObjectName listener,
                         MarshalledObject filter,
@@ -1809,7 +1819,7 @@
         }
     }
 
-    private static <T> T unwrap(final MarshalledObject mo,
+    private static <T> T unwrap(final MarshalledObject<?> mo,
                                 final ClassLoader cl,
                                 final Class<T> wrappedClass)
             throws IOException {
@@ -1847,7 +1857,7 @@
         return null;
     }
 
-    private static <T> T unwrap(final MarshalledObject mo,
+    private static <T> T unwrap(final MarshalledObject<?> mo,
                                 final ClassLoader cl1,
                                 final ClassLoader cl2,
                                 final Class<T> wrappedClass)
--- a/src/share/classes/javax/management/remote/rmi/RMIConnector.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/rmi/RMIConnector.java	Thu Jan 29 18:33:52 2009 -0800
@@ -28,6 +28,7 @@
 import com.sun.jmx.event.DaemonThreadFactory;
 import com.sun.jmx.event.EventConnection;
 import com.sun.jmx.mbeanserver.PerThreadGroupPool;
+import com.sun.jmx.mbeanserver.Util;
 import com.sun.jmx.remote.internal.ClientCommunicatorAdmin;
 import com.sun.jmx.remote.internal.ClientListenerInfo;
 import com.sun.jmx.remote.internal.ClientNotifForwarder;
@@ -71,9 +72,8 @@
 import java.util.Properties;
 import java.util.Set;
 import java.util.WeakHashMap;
-import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.Executor;
-import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
@@ -134,14 +134,14 @@
 public class RMIConnector implements JMXConnector, Serializable, JMXAddressable {
 
     private static final ClassLogger logger =
-        new ClassLogger("javax.management.remote.rmi", "RMIConnector");
+            new ClassLogger("javax.management.remote.rmi", "RMIConnector");
 
     private static final long serialVersionUID = 817323035842634473L;
 
     private RMIConnector(RMIServer rmiServer, JMXServiceURL address,
-                         Map<String, ?> environment) {
+            Map<String, ?> environment) {
         if (rmiServer == null && address == null) throw new
-          IllegalArgumentException("rmiServer and jmxServiceURL both null");
+                IllegalArgumentException("rmiServer and jmxServiceURL both null");
 
         initTransients();
 
@@ -257,7 +257,7 @@
     }
 
     public synchronized void connect(Map<String,?> environment)
-            throws IOException {
+    throws IOException {
         final boolean tracing = logger.traceOn();
         String        idstr   = (tracing?"["+this.toString()+"]":null);
 
@@ -274,8 +274,8 @@
             if (tracing) logger.trace("connect",idstr + " connecting...");
 
             final Map<String, Object> usemap =
-                new HashMap<String, Object>((this.env==null) ?
-                    Collections.<String, Object>emptyMap() : this.env);
+                    new HashMap<String, Object>((this.env==null) ?
+                        Collections.<String, Object>emptyMap() : this.env);
 
 
             if (environment != null) {
@@ -315,7 +315,7 @@
             defaultClassLoader = EnvHelp.resolveClientClassLoader(usemap);
 
             usemap.put(JMXConnectorFactory.DEFAULT_CLASS_LOADER,
-                       defaultClassLoader);
+                    defaultClassLoader);
 
             rmiNotifClient = new RMINotifClient(defaultClassLoader, usemap);
 
@@ -333,12 +333,12 @@
             eventServiceEnabled = EnvHelp.eventServiceEnabled(env);
 
             Notification connectedNotif =
-                new JMXConnectionNotification(JMXConnectionNotification.OPENED,
-                                              this,
-                                              connectionId,
-                                              clientNotifSeqNo++,
-                                              "Successful connection",
-                                              null);
+                    new JMXConnectionNotification(JMXConnectionNotification.OPENED,
+                    this,
+                    connectionId,
+                    clientNotifSeqNo++,
+                    "Successful connection",
+                    null);
             sendNotification(connectedNotif);
 
             // whether or not event service
@@ -363,7 +363,7 @@
         if (terminated || !connected) {
             if (logger.traceOn())
                 logger.trace("getConnectionId","["+this.toString()+
-                      "] not connected.");
+                        "] not connected.");
 
             throw new IOException("Not connected");
         }
@@ -374,23 +374,23 @@
     }
 
     public synchronized MBeanServerConnection getMBeanServerConnection()
-            throws IOException {
+    throws IOException {
         return getMBeanServerConnection(null);
     }
 
     public synchronized MBeanServerConnection
-        getMBeanServerConnection(Subject delegationSubject)
+            getMBeanServerConnection(Subject delegationSubject)
             throws IOException {
 
         if (terminated) {
             if (logger.traceOn())
                 logger.trace("getMBeanServerConnection","[" + this.toString() +
-                      "] already closed.");
+                        "] already closed.");
             throw new IOException("Connection closed");
         } else if (!connected) {
             if (logger.traceOn())
                 logger.trace("getMBeanServerConnection","[" + this.toString() +
-                      "] is not connected.");
+                        "] is not connected.");
             throw new IOException("Not connected");
         }
 
@@ -405,7 +405,7 @@
                     rmbsc, EventClientDelegateMBean.OBJECT_NAME,
                     EventClientDelegateMBean.class);
             EventClient ec = new EventClient(ecd, null, defaultExecutor(), null,
-                    EventClient.DEFAULT_LEASE_TIMEOUT);
+                    EventClient.DEFAULT_REQUESTED_LEASE_TIME);
 
             rmbsc = EventConnection.Factory.make(rmbsc, ec);
             ec.addEventClientListener(
@@ -421,29 +421,29 @@
             public ThreadPoolExecutor createThreadPool(ThreadGroup group) {
                 ThreadFactory daemonThreadFactory = new DaemonThreadFactory(
                         "JMX RMIConnector listener dispatch %d");
-                ThreadPoolExecutor exec = new ThreadPoolExecutor(
+                ThreadPoolExecutor executor = new ThreadPoolExecutor(
                         1, 10, 1, TimeUnit.SECONDS,
-                        new LinkedBlockingDeque<Runnable>(),
+                        new LinkedBlockingQueue<Runnable>(),
                         daemonThreadFactory);
-                exec.allowCoreThreadTimeOut(true);
-                return exec;
+                executor.allowCoreThreadTimeOut(true);
+                return executor;
             }
         };
         return listenerDispatchThreadPool.getThreadPoolExecutor(create);
     }
 
     public void
-        addConnectionNotificationListener(NotificationListener listener,
-                                          NotificationFilter filter,
-                                          Object handback) {
+            addConnectionNotificationListener(NotificationListener listener,
+            NotificationFilter filter,
+            Object handback) {
         if (listener == null)
             throw new NullPointerException("listener");
         connectionBroadcaster.addNotificationListener(listener, filter,
-                                                      handback);
+                handback);
     }
 
     public void
-        removeConnectionNotificationListener(NotificationListener listener)
+            removeConnectionNotificationListener(NotificationListener listener)
             throws ListenerNotFoundException {
         if (listener == null)
             throw new NullPointerException("listener");
@@ -451,14 +451,14 @@
     }
 
     public void
-        removeConnectionNotificationListener(NotificationListener listener,
-                                             NotificationFilter filter,
-                                             Object handback)
+            removeConnectionNotificationListener(NotificationListener listener,
+            NotificationFilter filter,
+            Object handback)
             throws ListenerNotFoundException {
         if (listener == null)
             throw new NullPointerException("listener");
         connectionBroadcaster.removeNotificationListener(listener, filter,
-                                                         handback);
+                handback);
     }
 
     private void sendNotification(Notification n) {
@@ -526,11 +526,11 @@
             try {
                 rmiNotifClient.terminate();
                 if (tracing) logger.trace("close",idstr +
-                                    " RMI Notification client terminated.");
+                        " RMI Notification client terminated.");
             } catch (RuntimeException x) {
                 closeException = x;
                 if (tracing) logger.trace("close",idstr +
-                         " Failed to terminate RMI Notification client: " + x);
+                        " Failed to terminate RMI Notification client: " + x);
                 if (debug) logger.debug("close",x);
             }
         }
@@ -544,7 +544,7 @@
             } catch (IOException e) {
                 closeException = e;
                 if (tracing) logger.trace("close",idstr +
-                                          " Failed to close RMIServer: " + e);
+                        " Failed to close RMIServer: " + e);
                 if (debug) logger.debug("close",e);
             }
         }
@@ -559,12 +559,12 @@
 
         if (savedConnectionId != null) {
             Notification closedNotif =
-                new JMXConnectionNotification(JMXConnectionNotification.CLOSED,
-                                              this,
-                                              savedConnectionId,
-                                              clientNotifSeqNo++,
-                                              "Client has been closed",
-                                              null);
+                    new JMXConnectionNotification(JMXConnectionNotification.CLOSED,
+                    this,
+                    savedConnectionId,
+                    clientNotifSeqNo++,
+                    "Client has been closed",
+                    null);
             sendNotification(closedNotif);
         }
 
@@ -572,20 +572,20 @@
         //
         if (closeException != null) {
             if (tracing) logger.trace("close",idstr + " failed to close: " +
-                               closeException);
+                    closeException);
             if (closeException instanceof IOException)
                 throw (IOException) closeException;
             if (closeException instanceof RuntimeException)
                 throw (RuntimeException) closeException;
             final IOException x =
-                new IOException("Failed to close: " + closeException);
+                    new IOException("Failed to close: " + closeException);
             throw EnvHelp.initCause(x,closeException);
         }
     }
 
     // added for re-connection
     private Integer addListenerWithSubject(ObjectName name,
-                                           MarshalledObject filter,
+                                           MarshalledObject<NotificationFilter> filter,
                                            Subject delegationSubject,
                                            boolean reconnect)
         throws InstanceNotFoundException, IOException {
@@ -593,50 +593,51 @@
         final boolean debug = logger.debugOn();
         if (debug)
             logger.debug("addListenerWithSubject",
-                         "(ObjectName,MarshalledObject,Subject)");
+                    "(ObjectName,MarshalledObject,Subject)");
 
         final ObjectName[] names = new ObjectName[] {name};
-        final MarshalledObject[] filters = new MarshalledObject[] {filter};
+        final MarshalledObject<NotificationFilter>[] filters =
+                Util.cast(new MarshalledObject<?>[] {filter});
         final Subject[] delegationSubjects = new Subject[] {
             delegationSubject
         };
 
         final Integer[] listenerIDs =
-            addListenersWithSubjects(names,filters,delegationSubjects,
-                                          reconnect);
+                addListenersWithSubjects(names,filters,delegationSubjects,
+                reconnect);
 
         if (debug) logger.debug("addListenerWithSubject","listenerID="
-                                + listenerIDs[0]);
+                + listenerIDs[0]);
         return listenerIDs[0];
     }
 
     // added for re-connection
     private Integer[] addListenersWithSubjects(ObjectName[]       names,
-                             MarshalledObject[] filters,
+                             MarshalledObject<NotificationFilter>[] filters,
                              Subject[]          delegationSubjects,
                              boolean            reconnect)
         throws InstanceNotFoundException, IOException {
 
         final boolean debug = logger.debugOn();
         if (debug)
-        logger.debug("addListenersWithSubjects",
-                         "(ObjectName[],MarshalledObject[],Subject[])");
+            logger.debug("addListenersWithSubjects",
+                    "(ObjectName[],MarshalledObject[],Subject[])");
 
         final ClassLoader old = pushDefaultClassLoader();
         Integer[] listenerIDs = null;
 
         try {
             listenerIDs = connection.addNotificationListeners(names,
-                                                              filters,
-                                                          delegationSubjects);
+                    filters,
+                    delegationSubjects);
         } catch (NoSuchObjectException noe) {
             // maybe reconnect
             if (reconnect) {
                 communicatorAdmin.gotIOException(noe);
 
                 listenerIDs = connection.addNotificationListeners(names,
-                                                       filters,
-                                                       delegationSubjects);
+                        filters,
+                        delegationSubjects);
             } else {
                 throw noe;
             }
@@ -670,65 +671,65 @@
         }
 
         public ObjectInstance createMBean(String className,
-                                          ObjectName name)
+                ObjectName name)
                 throws ReflectionException,
-                       InstanceAlreadyExistsException,
-                       MBeanRegistrationException,
-                       MBeanException,
-                       NotCompliantMBeanException,
-                       IOException {
+                InstanceAlreadyExistsException,
+                MBeanRegistrationException,
+                MBeanException,
+                NotCompliantMBeanException,
+                IOException {
             if (logger.debugOn())
                 logger.debug("createMBean(String,ObjectName)",
-                             "className=" + className + ", name=" +
-                             name);
+                        "className=" + className + ", name=" +
+                        name);
 
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.createMBean(className,
-                                             name,
-                                             delegationSubject);
+                        name,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.createMBean(className,
-                                             name,
-                                             delegationSubject);
+                        name,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
         }
 
         public ObjectInstance createMBean(String className,
-                                          ObjectName name,
-                                          ObjectName loaderName)
-            throws ReflectionException,
-                       InstanceAlreadyExistsException,
-                       MBeanRegistrationException,
-                       MBeanException,
-                       NotCompliantMBeanException,
-                       InstanceNotFoundException,
-                       IOException {
+                ObjectName name,
+                ObjectName loaderName)
+                throws ReflectionException,
+                InstanceAlreadyExistsException,
+                MBeanRegistrationException,
+                MBeanException,
+                NotCompliantMBeanException,
+                InstanceNotFoundException,
+                IOException {
 
             if (logger.debugOn())
                 logger.debug("createMBean(String,ObjectName,ObjectName)",
-                      "className=" + className + ", name="
-                      + name + ", loaderName="
-                      + loaderName + ")");
+                        "className=" + className + ", name="
+                        + name + ", loaderName="
+                        + loaderName + ")");
 
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.createMBean(className,
-                                             name,
-                                             loaderName,
-                                             delegationSubject);
+                        name,
+                        loaderName,
+                        delegationSubject);
 
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.createMBean(className,
-                                             name,
-                                             loaderName,
-                                             delegationSubject);
+                        name,
+                        loaderName,
+                        delegationSubject);
 
             } finally {
                 popDefaultClassLoader(old);
@@ -736,90 +737,90 @@
         }
 
         public ObjectInstance createMBean(String className,
-                                          ObjectName name,
-                                          Object params[],
-                                          String signature[])
+                ObjectName name,
+                Object params[],
+                String signature[])
                 throws ReflectionException,
-                       InstanceAlreadyExistsException,
-                       MBeanRegistrationException,
-                       MBeanException,
-                       NotCompliantMBeanException,
-                       IOException {
+                InstanceAlreadyExistsException,
+                MBeanRegistrationException,
+                MBeanException,
+                NotCompliantMBeanException,
+                IOException {
             if (logger.debugOn())
-               logger.debug("createMBean(String,ObjectName,Object[],String[])",
-                      "className=" + className + ", name="
-                      + name + ", params="
-                      + objects(params) + ", signature="
-                      + strings(signature));
+                logger.debug("createMBean(String,ObjectName,Object[],String[])",
+                        "className=" + className + ", name="
+                        + name + ", params="
+                        + objects(params) + ", signature="
+                        + strings(signature));
 
             final MarshalledObject<Object[]> sParams =
                     new MarshalledObject<Object[]>(params);
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.createMBean(className,
-                                             name,
-                                             sParams,
-                                             signature,
-                                             delegationSubject);
+                        name,
+                        sParams,
+                        signature,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.createMBean(className,
-                                             name,
-                                             sParams,
-                                             signature,
-                                             delegationSubject);
+                        name,
+                        sParams,
+                        signature,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
         }
 
         public ObjectInstance createMBean(String className,
-                                          ObjectName name,
-                                          ObjectName loaderName,
-                                          Object params[],
-                                          String signature[])
+                ObjectName name,
+                ObjectName loaderName,
+                Object params[],
+                String signature[])
                 throws ReflectionException,
-                       InstanceAlreadyExistsException,
-                       MBeanRegistrationException,
-                       MBeanException,
-                       NotCompliantMBeanException,
-                       InstanceNotFoundException,
-                       IOException {
+                InstanceAlreadyExistsException,
+                MBeanRegistrationException,
+                MBeanException,
+                NotCompliantMBeanException,
+                InstanceNotFoundException,
+                IOException {
             if (logger.debugOn()) logger.debug(
-                "createMBean(String,ObjectName,ObjectName,Object[],String[])",
-                "className=" + className + ", name=" + name + ", loaderName="
-                + loaderName + ", params=" + objects(params)
-                + ", signature=" + strings(signature));
+                    "createMBean(String,ObjectName,ObjectName,Object[],String[])",
+                    "className=" + className + ", name=" + name + ", loaderName="
+                    + loaderName + ", params=" + objects(params)
+                    + ", signature=" + strings(signature));
 
             final MarshalledObject<Object[]> sParams =
                     new MarshalledObject<Object[]>(params);
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.createMBean(className,
-                                             name,
-                                             loaderName,
-                                             sParams,
-                                             signature,
-                                             delegationSubject);
+                        name,
+                        loaderName,
+                        sParams,
+                        signature,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.createMBean(className,
-                                             name,
-                                             loaderName,
-                                             sParams,
-                                             signature,
-                                             delegationSubject);
+                        name,
+                        loaderName,
+                        sParams,
+                        signature,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
         }
 
         public void unregisterMBean(ObjectName name)
-                throws InstanceNotFoundException,
-                       MBeanRegistrationException,
-                       IOException {
+        throws InstanceNotFoundException,
+                MBeanRegistrationException,
+                IOException {
             if (logger.debugOn())
                 logger.debug("unregisterMBean", "name=" + name);
 
@@ -836,8 +837,8 @@
         }
 
         public ObjectInstance getObjectInstance(ObjectName name)
-                throws InstanceNotFoundException,
-                       IOException {
+        throws InstanceNotFoundException,
+                IOException {
             if (logger.debugOn())
                 logger.debug("getObjectInstance", "name=" + name);
 
@@ -854,10 +855,10 @@
         }
 
         public Set<ObjectInstance> queryMBeans(ObjectName name,
-                                               QueryExp query)
-            throws IOException {
+                QueryExp query)
+                throws IOException {
             if (logger.debugOn()) logger.debug("queryMBeans",
-                                   "name=" + name + ", query=" + query);
+                    "name=" + name + ", query=" + query);
 
             final MarshalledObject<QueryExp> sQuery =
                     new MarshalledObject<QueryExp>(query);
@@ -874,10 +875,10 @@
         }
 
         public Set<ObjectName> queryNames(ObjectName name,
-                                          QueryExp query)
+                QueryExp query)
                 throws IOException {
             if (logger.debugOn()) logger.debug("queryNames",
-                                   "name=" + name + ", query=" + query);
+                    "name=" + name + ", query=" + query);
 
             final MarshalledObject<QueryExp> sQuery =
                     new MarshalledObject<QueryExp>(query);
@@ -894,7 +895,7 @@
         }
 
         public boolean isRegistered(ObjectName name)
-                throws IOException {
+        throws IOException {
             if (logger.debugOn())
                 logger.debug("isRegistered", "name=" + name);
 
@@ -911,7 +912,7 @@
         }
 
         public Integer getMBeanCount()
-                throws IOException {
+        throws IOException {
             if (logger.debugOn()) logger.debug("getMBeanCount", "");
 
             final ClassLoader old = pushDefaultClassLoader();
@@ -927,53 +928,53 @@
         }
 
         public Object getAttribute(ObjectName name,
-                                   String attribute)
+                String attribute)
                 throws MBeanException,
-                       AttributeNotFoundException,
-                       InstanceNotFoundException,
-                       ReflectionException,
-                       IOException {
+                AttributeNotFoundException,
+                InstanceNotFoundException,
+                ReflectionException,
+                IOException {
             if (logger.debugOn()) logger.debug("getAttribute",
-                                   "name=" + name + ", attribute="
-                                   + attribute);
+                    "name=" + name + ", attribute="
+                    + attribute);
 
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.getAttribute(name,
-                                              attribute,
-                                              delegationSubject);
+                        attribute,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.getAttribute(name,
-                                              attribute,
-                                              delegationSubject);
+                        attribute,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
         }
 
         public AttributeList getAttributes(ObjectName name,
-                                           String[] attributes)
+                String[] attributes)
                 throws InstanceNotFoundException,
-                       ReflectionException,
-                       IOException {
+                ReflectionException,
+                IOException {
             if (logger.debugOn()) logger.debug("getAttributes",
-                                   "name=" + name + ", attributes="
-                                   + strings(attributes));
+                    "name=" + name + ", attributes="
+                    + strings(attributes));
 
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.getAttributes(name,
-                                               attributes,
-                                               delegationSubject);
+                        attributes,
+                        delegationSubject);
 
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.getAttributes(name,
-                                               attributes,
-                                               delegationSubject);
+                        attributes,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
@@ -981,20 +982,20 @@
 
 
         public void setAttribute(ObjectName name,
-                                 Attribute attribute)
-            throws InstanceNotFoundException,
-                   AttributeNotFoundException,
-                   InvalidAttributeValueException,
-                   MBeanException,
-                   ReflectionException,
-                   IOException {
+                Attribute attribute)
+                throws InstanceNotFoundException,
+                AttributeNotFoundException,
+                InvalidAttributeValueException,
+                MBeanException,
+                ReflectionException,
+                IOException {
 
             if (logger.debugOn()) logger.debug("setAttribute",
-                                   "name=" + name + ", attribute="
-                                   + attribute);
+                    "name=" + name + ", attribute="
+                    + attribute);
 
             final MarshalledObject<Attribute> sAttribute =
-                new MarshalledObject<Attribute>(attribute);
+                    new MarshalledObject<Attribute>(attribute);
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 connection.setAttribute(name, sAttribute, delegationSubject);
@@ -1008,28 +1009,28 @@
         }
 
         public AttributeList setAttributes(ObjectName name,
-                                           AttributeList attributes)
-            throws InstanceNotFoundException,
-                   ReflectionException,
-                   IOException {
+                AttributeList attributes)
+                throws InstanceNotFoundException,
+                ReflectionException,
+                IOException {
 
             if (logger.debugOn()) logger.debug("setAttributes",
-                                   "name=" + name + ", attributes="
-                                   + attributes);
+                    "name=" + name + ", attributes="
+                    + attributes);
 
             final MarshalledObject<AttributeList> sAttributes =
-                new MarshalledObject<AttributeList>(attributes);
+                    new MarshalledObject<AttributeList>(attributes);
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.setAttributes(name,
-                                               sAttributes,
-                                               delegationSubject);
+                        sAttributes,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.setAttributes(name,
-                                               sAttributes,
-                                               delegationSubject);
+                        sAttributes,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
@@ -1037,37 +1038,37 @@
 
 
         public Object invoke(ObjectName name,
-                             String operationName,
-                             Object params[],
-                             String signature[])
+                String operationName,
+                Object params[],
+                String signature[])
                 throws InstanceNotFoundException,
-                       MBeanException,
-                       ReflectionException,
-                       IOException {
+                MBeanException,
+                ReflectionException,
+                IOException {
 
             if (logger.debugOn()) logger.debug("invoke",
-                                   "name=" + name
-                                   + ", operationName=" + operationName
-                                   + ", params=" + objects(params)
-                                   + ", signature=" + strings(signature));
+                    "name=" + name
+                    + ", operationName=" + operationName
+                    + ", params=" + objects(params)
+                    + ", signature=" + strings(signature));
 
             final MarshalledObject<Object[]> sParams =
                     new MarshalledObject<Object[]>(params);
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.invoke(name,
-                                        operationName,
-                                        sParams,
-                                        signature,
-                                        delegationSubject);
+                        operationName,
+                        sParams,
+                        signature,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.invoke(name,
-                                        operationName,
-                                        sParams,
-                                        signature,
-                                        delegationSubject);
+                        operationName,
+                        sParams,
+                        signature,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
@@ -1075,7 +1076,7 @@
 
 
         public String getDefaultDomain()
-                throws IOException {
+        throws IOException {
             if (logger.debugOn()) logger.debug("getDefaultDomain", "");
 
             final ClassLoader old = pushDefaultClassLoader();
@@ -1106,10 +1107,10 @@
         }
 
         public MBeanInfo getMBeanInfo(ObjectName name)
-                throws InstanceNotFoundException,
-                       IntrospectionException,
-                       ReflectionException,
-                       IOException {
+        throws InstanceNotFoundException,
+                IntrospectionException,
+                ReflectionException,
+                IOException {
 
             if (logger.debugOn()) logger.debug("getMBeanInfo", "name=" + name);
             final ClassLoader old = pushDefaultClassLoader();
@@ -1126,41 +1127,41 @@
 
 
         public boolean isInstanceOf(ObjectName name,
-                                    String className)
+                String className)
                 throws InstanceNotFoundException,
-                       IOException {
+                IOException {
             if (logger.debugOn())
                 logger.debug("isInstanceOf", "name=" + name +
-                             ", className=" + className);
+                        ", className=" + className);
 
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 return connection.isInstanceOf(name,
-                                              className,
-                                              delegationSubject);
+                        className,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 return connection.isInstanceOf(name,
-                                              className,
-                                              delegationSubject);
+                        className,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
         }
 
         public void addNotificationListener(ObjectName name,
-                                            ObjectName listener,
-                                            NotificationFilter filter,
-                                            Object handback)
+                ObjectName listener,
+                NotificationFilter filter,
+                Object handback)
                 throws InstanceNotFoundException,
-                       IOException {
+                IOException {
 
             if (logger.debugOn())
                 logger.debug("addNotificationListener" +
-                       "(ObjectName,ObjectName,NotificationFilter,Object)",
-                       "name=" + name + ", listener=" + listener
-                       + ", filter=" + filter + ", handback=" + handback);
+                        "(ObjectName,ObjectName,NotificationFilter,Object)",
+                        "name=" + name + ", listener=" + listener
+                        + ", filter=" + filter + ", handback=" + handback);
 
             final MarshalledObject<NotificationFilter> sFilter =
                     new MarshalledObject<NotificationFilter>(filter);
@@ -1169,64 +1170,64 @@
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 connection.addNotificationListener(name,
-                                                  listener,
-                                                  sFilter,
-                                                  sHandback,
-                                                  delegationSubject);
+                        listener,
+                        sFilter,
+                        sHandback,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 connection.addNotificationListener(name,
-                                                  listener,
-                                                  sFilter,
-                                                  sHandback,
-                                                  delegationSubject);
+                        listener,
+                        sFilter,
+                        sHandback,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
         }
 
         public void removeNotificationListener(ObjectName name,
-                                               ObjectName listener)
+                ObjectName listener)
                 throws InstanceNotFoundException,
-                       ListenerNotFoundException,
-                       IOException {
+                ListenerNotFoundException,
+                IOException {
 
             if (logger.debugOn()) logger.debug("removeNotificationListener" +
-                                   "(ObjectName,ObjectName)",
-                                   "name=" + name
-                                   + ", listener=" + listener);
+                    "(ObjectName,ObjectName)",
+                    "name=" + name
+                    + ", listener=" + listener);
 
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 connection.removeNotificationListener(name,
-                                                     listener,
-                                                     delegationSubject);
+                        listener,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 connection.removeNotificationListener(name,
-                                                     listener,
-                                                     delegationSubject);
+                        listener,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
         }
 
         public void removeNotificationListener(ObjectName name,
-                                               ObjectName listener,
-                                               NotificationFilter filter,
-                                               Object handback)
+                ObjectName listener,
+                NotificationFilter filter,
+                Object handback)
                 throws InstanceNotFoundException,
-                       ListenerNotFoundException,
-                       IOException {
+                ListenerNotFoundException,
+                IOException {
             if (logger.debugOn())
                 logger.debug("removeNotificationListener" +
-                      "(ObjectName,ObjectName,NotificationFilter,Object)",
-                      "name=" + name
-                      + ", listener=" + listener
-                      + ", filter=" + filter
-                      + ", handback=" + handback);
+                        "(ObjectName,ObjectName,NotificationFilter,Object)",
+                        "name=" + name
+                        + ", listener=" + listener
+                        + ", filter=" + filter
+                        + ", handback=" + handback);
 
             final MarshalledObject<NotificationFilter> sFilter =
                     new MarshalledObject<NotificationFilter>(filter);
@@ -1235,18 +1236,18 @@
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 connection.removeNotificationListener(name,
-                                                     listener,
-                                                     sFilter,
-                                                     sHandback,
-                                                     delegationSubject);
+                        listener,
+                        sFilter,
+                        sHandback,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 connection.removeNotificationListener(name,
-                                                     listener,
-                                                     sFilter,
-                                                     sHandback,
-                                                     delegationSubject);
+                        listener,
+                        sFilter,
+                        sHandback,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
@@ -1255,34 +1256,34 @@
         // Specific Notification Handle ----------------------------------
 
         public void addNotificationListener(ObjectName name,
-                                            NotificationListener listener,
-                                            NotificationFilter filter,
-                                            Object handback)
+                NotificationListener listener,
+                NotificationFilter filter,
+                Object handback)
                 throws InstanceNotFoundException,
-                       IOException {
+                IOException {
 
             final boolean debug = logger.debugOn();
 
             if (debug)
                 logger.debug("addNotificationListener" +
-                             "(ObjectName,NotificationListener,"+
-                             "NotificationFilter,Object)",
-                             "name=" + name
-                             + ", listener=" + listener
-                             + ", filter=" + filter
-                             + ", handback=" + handback);
+                        "(ObjectName,NotificationListener,"+
+                        "NotificationFilter,Object)",
+                        "name=" + name
+                        + ", listener=" + listener
+                        + ", filter=" + filter
+                        + ", handback=" + handback);
 
             final Integer listenerID =
-                addListenerWithSubject(name,
-                                       new MarshalledObject<NotificationFilter>(filter),
-                                       delegationSubject,true);
+                    addListenerWithSubject(name,
+                    new MarshalledObject<NotificationFilter>(filter),
+                    delegationSubject,true);
             rmiNotifClient.addNotificationListener(listenerID, name, listener,
-                                                   filter, handback,
-                                                   delegationSubject);
+                    filter, handback,
+                    delegationSubject);
         }
 
         public void removeNotificationListener(ObjectName name,
-                                               NotificationListener listener)
+                NotificationListener listener)
                 throws InstanceNotFoundException,
                 ListenerNotFoundException,
                 IOException {
@@ -1290,28 +1291,28 @@
             final boolean debug = logger.debugOn();
 
             if (debug) logger.debug("removeNotificationListener"+
-                             "(ObjectName,NotificationListener)",
-                             "name=" + name
-                             + ", listener=" + listener);
+                    "(ObjectName,NotificationListener)",
+                    "name=" + name
+                    + ", listener=" + listener);
 
             final Integer[] ret =
-                rmiNotifClient.removeNotificationListener(name, listener);
+                    rmiNotifClient.removeNotificationListener(name, listener);
 
             if (debug) logger.debug("removeNotificationListener",
-                             "listenerIDs=" + objects(ret));
+                    "listenerIDs=" + objects(ret));
 
             final ClassLoader old = pushDefaultClassLoader();
 
             try {
                 connection.removeNotificationListeners(name,
-                                                       ret,
-                                                       delegationSubject);
+                        ret,
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 connection.removeNotificationListeners(name,
-                                                       ret,
-                                                       delegationSubject);
+                        ret,
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
@@ -1319,41 +1320,41 @@
         }
 
         public void removeNotificationListener(ObjectName name,
-                                           NotificationListener listener,
-                                           NotificationFilter filter,
-                                           Object handback)
-            throws InstanceNotFoundException,
-                   ListenerNotFoundException,
-                   IOException {
+                NotificationListener listener,
+                NotificationFilter filter,
+                Object handback)
+                throws InstanceNotFoundException,
+                ListenerNotFoundException,
+                IOException {
             final boolean debug = logger.debugOn();
 
             if (debug)
                 logger.debug("removeNotificationListener"+
-                      "(ObjectName,NotificationListener,"+
-                      "NotificationFilter,Object)",
-                      "name=" + name
-                      + ", listener=" + listener
-                      + ", filter=" + filter
-                      + ", handback=" + handback);
+                        "(ObjectName,NotificationListener,"+
+                        "NotificationFilter,Object)",
+                        "name=" + name
+                        + ", listener=" + listener
+                        + ", filter=" + filter
+                        + ", handback=" + handback);
 
             final Integer ret =
-                rmiNotifClient.removeNotificationListener(name, listener,
-                                                         filter, handback);
+                    rmiNotifClient.removeNotificationListener(name, listener,
+                    filter, handback);
 
             if (debug) logger.debug("removeNotificationListener",
-                             "listenerID=" + ret);
+                    "listenerID=" + ret);
 
             final ClassLoader old = pushDefaultClassLoader();
             try {
                 connection.removeNotificationListeners(name,
-                                                       new Integer[] {ret},
-                                                       delegationSubject);
+                        new Integer[] {ret},
+                        delegationSubject);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 connection.removeNotificationListeners(name,
-                                                       new Integer[] {ret},
-                                                       delegationSubject);
+                        new Integer[] {ret},
+                        delegationSubject);
             } finally {
                 popDefaultClassLoader(old);
             }
@@ -1363,21 +1364,21 @@
 
     //--------------------------------------------------------------------
     private class RMINotifClient extends ClientNotifForwarder {
-        public RMINotifClient(ClassLoader cl, Map env) {
+        public RMINotifClient(ClassLoader cl, Map<String, ?> env) {
             super(cl, env);
         }
 
         protected NotificationResult fetchNotifs(long clientSequenceNumber,
-                                                 int maxNotifications,
-                                                 long timeout)
+                int maxNotifications,
+                long timeout)
                 throws IOException, ClassNotFoundException {
             IOException org;
 
             while (true) { // used for a successful re-connection
                 try {
                     return connection.fetchNotifications(clientSequenceNumber,
-                                                         maxNotifications,
-                                                         timeout);
+                            maxNotifications,
+                            timeout);
                 } catch (IOException ioe) {
                     org = ioe;
 
@@ -1416,7 +1417,7 @@
                    clear we can do much better.  */
                 if (ume.detail instanceof WriteAbortedException) {
                     WriteAbortedException wae =
-                        (WriteAbortedException) ume.detail;
+                            (WriteAbortedException) ume.detail;
                     if (wae.detail instanceof IOException)
                         throw (IOException) wae.detail;
                 }
@@ -1434,52 +1435,52 @@
         }
 
         protected Integer addListenerForMBeanRemovedNotif()
-                throws IOException, InstanceNotFoundException {
+        throws IOException, InstanceNotFoundException {
             NotificationFilterSupport clientFilter =
-                new NotificationFilterSupport();
+                    new NotificationFilterSupport();
             clientFilter.enableType(
-                MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
+                    MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
             MarshalledObject<NotificationFilter> sFilter =
                 new MarshalledObject<NotificationFilter>(clientFilter);
 
             Integer[] listenerIDs;
             final ObjectName[] names =
                 new ObjectName[] {MBeanServerDelegate.DELEGATE_NAME};
-            final MarshalledObject[] filters =
-                new MarshalledObject[] {sFilter};
+            final MarshalledObject<NotificationFilter>[] filters =
+                Util.cast(new MarshalledObject<?>[] {sFilter});
             final Subject[] subjects = new Subject[] {null};
             try {
                 listenerIDs =
-                    connection.addNotificationListeners(names,
-                                                        filters,
-                                                        subjects);
+                        connection.addNotificationListeners(names,
+                        filters,
+                        subjects);
 
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 listenerIDs =
-                    connection.addNotificationListeners(names,
-                                                        filters,
-                                                        subjects);
+                        connection.addNotificationListeners(names,
+                        filters,
+                        subjects);
             }
             return listenerIDs[0];
         }
 
         protected void removeListenerForMBeanRemovedNotif(Integer id)
-                throws IOException, InstanceNotFoundException,
-                       ListenerNotFoundException {
+        throws IOException, InstanceNotFoundException,
+                ListenerNotFoundException {
             try {
                 connection.removeNotificationListeners(
-                                             MBeanServerDelegate.DELEGATE_NAME,
-                                             new Integer[] {id},
-                                             null);
+                        MBeanServerDelegate.DELEGATE_NAME,
+                        new Integer[] {id},
+                        null);
             } catch (IOException ioe) {
                 communicatorAdmin.gotIOException(ioe);
 
                 connection.removeNotificationListeners(
-                                             MBeanServerDelegate.DELEGATE_NAME,
-                                             new Integer[] {id},
-                                             null);
+                        MBeanServerDelegate.DELEGATE_NAME,
+                        new Integer[] {id},
+                        null);
             }
 
         }
@@ -1503,7 +1504,7 @@
             super(period);
         }
 
-        public void gotIOException (IOException ioe) throws IOException {
+        public void gotIOException(IOException ioe) throws IOException {
             if (ioe instanceof NoSuchObjectException) {
                 // need to restart
                 super.gotIOException(ioe);
@@ -1529,7 +1530,7 @@
                     // we should close the connection,
                     // but send a failed notif at first
                     final Notification failedNotif =
-                        new JMXConnectionNotification(
+                            new JMXConnectionNotification(
                             JMXConnectionNotification.FAILED,
                             this,
                             connectionId,
@@ -1558,7 +1559,7 @@
                    will throw a ServerException at client side which wraps this
                    UnmarshalException.
                    No failed notif here.
-                */
+                 */
                 Throwable tt = ((ServerException)ioe).detail;
 
                 if (tt instanceof IOException) {
@@ -1581,7 +1582,8 @@
             final ObjectName[] names = new ObjectName[len];
             final NotificationListener[] listeners = new NotificationListener[len];
             final NotificationFilter[] filters = new NotificationFilter[len];
-            final MarshalledObject[] mFilters = new MarshalledObject[len];
+            final MarshalledObject<NotificationFilter>[] mFilters =
+                    Util.cast(new MarshalledObject<?>[len]);
             final Object[] handbacks = new Object[len];
 
             for (i=0;i<len;i++) {
@@ -1598,11 +1600,11 @@
 
                 for (i=0;i<len;i++) {
                     clis[i] = new ClientListenerInfo(ids[i],
-                                                     names[i],
-                                                     listeners[i],
-                                                     filters[i],
-                                                     handbacks[i],
-                                                     subjects[i]);
+                            names[i],
+                            listeners[i],
+                            filters[i],
+                            handbacks[i],
+                            subjects[i]);
                 }
 
                 rmiNotifClient.postReconnection(clis);
@@ -1621,15 +1623,15 @@
                             false);
 
                     clis[j++] = new ClientListenerInfo(id,
-                                                       names[i],
-                                                       listeners[i],
-                                                       filters[i],
-                                                       handbacks[i],
-                                                       subjects[i]);
+                            names[i],
+                            listeners[i],
+                            filters[i],
+                            handbacks[i],
+                            subjects[i]);
                 } catch (InstanceNotFoundException infe) {
                     logger.warning("reconnectNotificationListeners",
-                                   "Can't reconnect listener for " +
-                                   names[i]);
+                            "Can't reconnect listener for " +
+                            names[i]);
                 }
             }
 
@@ -1645,7 +1647,7 @@
         protected void checkConnection() throws IOException {
             if (logger.debugOn())
                 logger.debug("RMIClientCommunicatorAdmin-checkConnection",
-                             "Calling the method getDefaultDomain.");
+                        "Calling the method getDefaultDomain.");
 
             connection.getDefaultDomain(null);
         }
@@ -1675,12 +1677,12 @@
             connectionId = getConnectionId();
 
             Notification reconnectedNotif =
-                new JMXConnectionNotification(JMXConnectionNotification.OPENED,
-                                              this,
-                                              connectionId,
-                                              clientNotifSeqNo++,
-                                              "Reconnected to server",
-                                              null);
+                    new JMXConnectionNotification(JMXConnectionNotification.OPENED,
+                    this,
+                    connectionId,
+                    clientNotifSeqNo++,
+                    "Reconnected to server",
+                    null);
             sendNotification(reconnectedNotif);
 
         }
@@ -1690,7 +1692,7 @@
                 close();
             } catch (IOException ioe) {
                 logger.warning("RMIClientCommunicatorAdmin-doStop",
-                               "Failed to call the method close():" + ioe);
+                        "Failed to call the method close():" + ioe);
                 logger.debug("RMIClientCommunicatorAdmin-doStop",ioe);
             }
         }
@@ -1743,7 +1745,7 @@
      * @exception IOException if the connection to the ORB failed.
      **/
     static RMIServer connectStub(RMIServer rmiServer,
-                                 Map environment)
+                                 Map<String, ?> environment)
         throws IOException {
         if (rmiServer instanceof javax.rmi.CORBA.Stub) {
             javax.rmi.CORBA.Stub stub = (javax.rmi.CORBA.Stub) rmiServer;
@@ -1777,21 +1779,21 @@
      *      does not point to an {@link org.omg.CORBA.ORB ORB}.
      * @exception IOException if the ORB initialization failed.
      **/
-    static ORB resolveOrb(Map environment)
+    static ORB resolveOrb(Map<String, ?> environment)
         throws IOException {
         if (environment != null) {
             final Object orb = environment.get(EnvHelp.DEFAULT_ORB);
             if (orb != null && !(orb instanceof  ORB))
                 throw new IllegalArgumentException(EnvHelp.DEFAULT_ORB +
-                          " must be an instance of org.omg.CORBA.ORB.");
+                        " must be an instance of org.omg.CORBA.ORB.");
             if (orb != null) return (ORB)orb;
         }
         final ORB orb =
-            (RMIConnector.orb==null)?null:RMIConnector.orb.get();
+                (RMIConnector.orb==null)?null:RMIConnector.orb.get();
         if (orb != null) return orb;
 
         final ORB newOrb =
-            ORB.init((String[])null, (Properties)null);
+                ORB.init((String[])null, (Properties)null);
         RMIConnector.orb = new WeakReference<ORB>(newOrb);
         return newOrb;
     }
@@ -1808,11 +1810,11 @@
      * @see #RMIConnector(RMIServer,Map)
      **/
     private void readObject(java.io.ObjectInputStream s)
-        throws IOException, ClassNotFoundException  {
+    throws IOException, ClassNotFoundException  {
         s.defaultReadObject();
 
         if (rmiServer == null && jmxServiceURL == null) throw new
-          InvalidObjectException("rmiServer and jmxServiceURL both null");
+                InvalidObjectException("rmiServer and jmxServiceURL both null");
 
         initTransients();
     }
@@ -1849,9 +1851,9 @@
      * @see #RMIConnector(RMIServer,Map)
      **/
     private void writeObject(java.io.ObjectOutputStream s)
-        throws IOException {
+    throws IOException {
         if (rmiServer == null && jmxServiceURL == null) throw new
-          InvalidObjectException("rmiServer and jmxServiceURL both null.");
+                InvalidObjectException("rmiServer and jmxServiceURL both null.");
         connectStub(this.rmiServer,env);
         s.defaultWriteObject();
     }
@@ -1890,21 +1892,21 @@
     //--------------------------------------------------------------------
 
     private static void checkStub(Remote stub,
-                                  Class<?> stubClass) {
+            Class<?> stubClass) {
 
         // Check remote stub is from the expected class.
         //
         if (stub.getClass() != stubClass) {
             if (!Proxy.isProxyClass(stub.getClass())) {
                 throw new SecurityException(
-                          "Expecting a " + stubClass.getName() + " stub!");
+                        "Expecting a " + stubClass.getName() + " stub!");
             } else {
                 InvocationHandler handler = Proxy.getInvocationHandler(stub);
                 if (handler.getClass() != RemoteObjectInvocationHandler.class)
                     throw new SecurityException(
-                              "Expecting a dynamic proxy instance with a " +
-                              RemoteObjectInvocationHandler.class.getName() +
-                              " invocation handler!");
+                            "Expecting a dynamic proxy instance with a " +
+                            RemoteObjectInvocationHandler.class.getName() +
+                            " invocation handler!");
                 else
                     stub = (Remote) handler;
             }
@@ -1916,8 +1918,8 @@
         RemoteRef ref = ((RemoteObject)stub).getRef();
         if (ref.getClass() != UnicastRef2.class)
             throw new SecurityException(
-                      "Expecting a " + UnicastRef2.class.getName() +
-                      " remote reference in stub!");
+                    "Expecting a " + UnicastRef2.class.getName() +
+                    " remote reference in stub!");
 
         // Check RMIClientSocketFactory in stub is from the expected class
         // "javax.rmi.ssl.SslRMIClientSocketFactory".
@@ -1926,8 +1928,8 @@
         RMIClientSocketFactory csf = liveRef.getClientSocketFactory();
         if (csf == null || csf.getClass() != SslRMIClientSocketFactory.class)
             throw new SecurityException(
-                  "Expecting a " + SslRMIClientSocketFactory.class.getName() +
-                  " RMI client socket factory in stub!");
+                    "Expecting a " + SslRMIClientSocketFactory.class.getName() +
+                    " RMI client socket factory in stub!");
     }
 
     //--------------------------------------------------------------------
@@ -1935,8 +1937,8 @@
     //--------------------------------------------------------------------
 
     private RMIServer findRMIServer(JMXServiceURL directoryURL,
-                                    Map<String, Object> environment)
-        throws NamingException, IOException {
+            Map<String, Object> environment)
+            throws NamingException, IOException {
         final boolean isIiop = RMIConnectorServer.isIiopURL(directoryURL,true);
         if (isIiop) {
             // Make sure java.naming.corba.orb is in the Map.
@@ -1954,7 +1956,7 @@
             return findRMIServerIIOP(path.substring(5,end), environment, isIiop);
         else {
             final String msg = "URL path must begin with /jndi/ or /stub/ " +
-                "or /ior/: " + path;
+                    "or /ior/: " + path;
             throw new MalformedURLException(msg);
         }
     }
@@ -1973,8 +1975,8 @@
      * @exception NamingException if the stub couldn't be found.
      **/
     private RMIServer findRMIServerJNDI(String jndiURL, Map<String, ?> env,
-                                        boolean isIiop)
-        throws NamingException {
+            boolean isIiop)
+            throws NamingException {
 
         InitialContext ctx = new InitialContext(EnvHelp.mapToHashtable(env));
 
@@ -1995,25 +1997,25 @@
     private static RMIServer narrowIIOPServer(Object objref) {
         try {
             return (RMIServer)
-                PortableRemoteObject.narrow(objref, RMIServer.class);
+            PortableRemoteObject.narrow(objref, RMIServer.class);
         } catch (ClassCastException e) {
             if (logger.traceOn())
                 logger.trace("narrowIIOPServer","Failed to narrow objref=" +
-                      objref + ": " + e);
+                        objref + ": " + e);
             if (logger.debugOn()) logger.debug("narrowIIOPServer",e);
             return null;
         }
     }
 
-    private RMIServer findRMIServerIIOP(String ior, Map env, boolean isIiop) {
+    private RMIServer findRMIServerIIOP(String ior, Map<String, ?> env, boolean isIiop) {
         // could forbid "rmi:" URL here -- but do we need to?
         final ORB orb = (ORB)
-            env.get(EnvHelp.DEFAULT_ORB);
+        env.get(EnvHelp.DEFAULT_ORB);
         final Object stub = orb.string_to_object(ior);
         return (RMIServer) PortableRemoteObject.narrow(stub, RMIServer.class);
     }
 
-    private RMIServer findRMIServerJRMP(String base64, Map env, boolean isIiop)
+    private RMIServer findRMIServerJRMP(String base64, Map<String, ?> env, boolean isIiop)
         throws IOException {
         // could forbid "iiop:" URL here -- but do we need to?
         final byte[] serialized;
@@ -2021,15 +2023,15 @@
             serialized = base64ToByteArray(base64);
         } catch (IllegalArgumentException e) {
             throw new MalformedURLException("Bad BASE64 encoding: " +
-                                            e.getMessage());
+                    e.getMessage());
         }
         final ByteArrayInputStream bin = new ByteArrayInputStream(serialized);
 
         final ClassLoader loader = EnvHelp.resolveClientClassLoader(env);
         final ObjectInputStream oin =
-            (loader == null) ?
-                new ObjectInputStream(bin) :
-                new ObjectInputStreamWithLoader(bin, loader);
+                (loader == null) ?
+                    new ObjectInputStream(bin) :
+                    new ObjectInputStreamWithLoader(bin, loader);
         final Object stub;
         try {
             stub = oin.readObject();
@@ -2042,12 +2044,13 @@
     private static final class ObjectInputStreamWithLoader
             extends ObjectInputStream {
         ObjectInputStreamWithLoader(InputStream in, ClassLoader cl)
-                throws IOException {
+        throws IOException {
             super(in);
             this.loader = cl;
         }
 
-        protected Class resolveClass(ObjectStreamClass classDesc)
+        @Override
+        protected Class<?> resolveClass(ObjectStreamClass classDesc)
                 throws IOException, ClassNotFoundException {
             return Class.forName(classDesc.getName(), false, loader);
         }
@@ -2122,68 +2125,68 @@
 
     private static final String rmiServerImplStubClassName =
         RMIServer.class.getName() + "Impl_Stub";
-    private static final Class rmiServerImplStubClass;
+    private static final Class<?> rmiServerImplStubClass;
     private static final String rmiConnectionImplStubClassName =
-        RMIConnection.class.getName() + "Impl_Stub";
+            RMIConnection.class.getName() + "Impl_Stub";
     private static final Class<?> rmiConnectionImplStubClass;
     private static final String pRefClassName =
         "com.sun.jmx.remote.internal.PRef";
-    private static final Constructor proxyRefConstructor;
+    private static final Constructor<?> proxyRefConstructor;
     static {
         final String pRefByteCodeString =
-            "\312\376\272\276\0\0\0.\0\27\12\0\5\0\15\11\0\4\0\16\13\0\17\0"+
-            "\20\7\0\21\7\0\22\1\0\6<init>\1\0\36(Ljava/rmi/server/RemoteRef;"+
-            ")V\1\0\4Code\1\0\6invoke\1\0S(Ljava/rmi/Remote;Ljava/lang/reflec"+
-            "t/Method;[Ljava/lang/Object;J)Ljava/lang/Object;\1\0\12Exception"+
-            "s\7\0\23\14\0\6\0\7\14\0\24\0\25\7\0\26\14\0\11\0\12\1\0\40com/"+
-            "sun/jmx/remote/internal/PRef\1\0$com/sun/jmx/remote/internal/Pr"+
-            "oxyRef\1\0\23java/lang/Exception\1\0\3ref\1\0\33Ljava/rmi/serve"+
-            "r/RemoteRef;\1\0\31java/rmi/server/RemoteRef\0!\0\4\0\5\0\0\0\0"+
-            "\0\2\0\1\0\6\0\7\0\1\0\10\0\0\0\22\0\2\0\2\0\0\0\6*+\267\0\1\261"+
-            "\0\0\0\0\0\1\0\11\0\12\0\2\0\10\0\0\0\33\0\6\0\6\0\0\0\17*\264\0"+
-            "\2+,-\26\4\271\0\3\6\0\260\0\0\0\0\0\13\0\0\0\4\0\1\0\14\0\0";
+                "\312\376\272\276\0\0\0.\0\27\12\0\5\0\15\11\0\4\0\16\13\0\17\0"+
+                "\20\7\0\21\7\0\22\1\0\6<init>\1\0\36(Ljava/rmi/server/RemoteRef;"+
+                ")V\1\0\4Code\1\0\6invoke\1\0S(Ljava/rmi/Remote;Ljava/lang/reflec"+
+                "t/Method;[Ljava/lang/Object;J)Ljava/lang/Object;\1\0\12Exception"+
+                "s\7\0\23\14\0\6\0\7\14\0\24\0\25\7\0\26\14\0\11\0\12\1\0\40com/"+
+                "sun/jmx/remote/internal/PRef\1\0$com/sun/jmx/remote/internal/Pr"+
+                "oxyRef\1\0\23java/lang/Exception\1\0\3ref\1\0\33Ljava/rmi/serve"+
+                "r/RemoteRef;\1\0\31java/rmi/server/RemoteRef\0!\0\4\0\5\0\0\0\0"+
+                "\0\2\0\1\0\6\0\7\0\1\0\10\0\0\0\22\0\2\0\2\0\0\0\6*+\267\0\1\261"+
+                "\0\0\0\0\0\1\0\11\0\12\0\2\0\10\0\0\0\33\0\6\0\6\0\0\0\17*\264\0"+
+                "\2+,-\26\4\271\0\3\6\0\260\0\0\0\0\0\13\0\0\0\4\0\1\0\14\0\0";
         final byte[] pRefByteCode =
-            NoCallStackClassLoader.stringToBytes(pRefByteCodeString);
+                NoCallStackClassLoader.stringToBytes(pRefByteCodeString);
         PrivilegedExceptionAction<Constructor<?>> action =
                 new PrivilegedExceptionAction<Constructor<?>>() {
             public Constructor<?> run() throws Exception {
                 Class thisClass = RMIConnector.class;
                 ClassLoader thisLoader = thisClass.getClassLoader();
                 ProtectionDomain thisProtectionDomain =
-                    thisClass.getProtectionDomain();
+                        thisClass.getProtectionDomain();
                 String[] otherClassNames = {ProxyRef.class.getName()};
                 ClassLoader cl =
-                    new NoCallStackClassLoader(pRefClassName,
-                                               pRefByteCode,
-                                               otherClassNames,
-                                               thisLoader,
-                                               thisProtectionDomain);
+                        new NoCallStackClassLoader(pRefClassName,
+                        pRefByteCode,
+                        otherClassNames,
+                        thisLoader,
+                        thisProtectionDomain);
                 Class<?> c = cl.loadClass(pRefClassName);
                 return c.getConstructor(RemoteRef.class);
             }
         };
 
-        Class serverStubClass;
+        Class<?> serverStubClass;
         try {
             serverStubClass = Class.forName(rmiServerImplStubClassName);
         } catch (Exception e) {
             logger.error("<clinit>",
-                         "Failed to instantiate " +
-                         rmiServerImplStubClassName + ": " + e);
+                    "Failed to instantiate " +
+                    rmiServerImplStubClassName + ": " + e);
             logger.debug("<clinit>",e);
             serverStubClass = null;
         }
         rmiServerImplStubClass = serverStubClass;
 
         Class<?> stubClass;
-        Constructor constr;
+        Constructor<?> constr;
         try {
             stubClass = Class.forName(rmiConnectionImplStubClassName);
-            constr = (Constructor) AccessController.doPrivileged(action);
+            constr = (Constructor<?>) AccessController.doPrivileged(action);
         } catch (Exception e) {
             logger.error("<clinit>",
-                         "Failed to initialize proxy reference constructor "+
-                         "for " + rmiConnectionImplStubClassName + ": " + e);
+                    "Failed to initialize proxy reference constructor "+
+                    "for " + rmiConnectionImplStubClassName + ": " + e);
             logger.debug("<clinit>",e);
             stubClass = null;
             constr = null;
@@ -2193,18 +2196,17 @@
     }
 
     private static RMIConnection shadowJrmpStub(RemoteObject stub)
-            throws InstantiationException, IllegalAccessException,
-                   InvocationTargetException, ClassNotFoundException,
-                   NoSuchMethodException {
+    throws InstantiationException, IllegalAccessException,
+            InvocationTargetException, ClassNotFoundException,
+            NoSuchMethodException {
         RemoteRef ref = stub.getRef();
         RemoteRef proxyRef = (RemoteRef)
             proxyRefConstructor.newInstance(new Object[] {ref});
-        final Class[] constrTypes = {RemoteRef.class};
-        final Constructor rmiConnectionImplStubConstructor =
-            rmiConnectionImplStubClass.getConstructor(constrTypes);
+        final Constructor<?> rmiConnectionImplStubConstructor =
+            rmiConnectionImplStubClass.getConstructor(RemoteRef.class);
         Object[] args = {proxyRef};
         RMIConnection proxyStub = (RMIConnection)
-            rmiConnectionImplStubConstructor.newInstance(args);
+        rmiConnectionImplStubConstructor.newInstance(args);
         return proxyStub;
     }
 
@@ -2324,55 +2326,55 @@
 
      */
     private static final String iiopConnectionStubClassName =
-        "org.omg.stub.javax.management.remote.rmi._RMIConnection_Stub";
+            "org.omg.stub.javax.management.remote.rmi._RMIConnection_Stub";
     private static final String proxyStubClassName =
-        "com.sun.jmx.remote.internal.ProxyStub";
+            "com.sun.jmx.remote.internal.ProxyStub";
     private static final String pInputStreamClassName =
         "com.sun.jmx.remote.internal.PInputStream";
-    private static final Class proxyStubClass;
+    private static final Class<?> proxyStubClass;
     static {
         final String proxyStubByteCodeString =
-            "\312\376\272\276\0\0\0.\0)\12\0\14\0\26\7\0\27\12\0\14\0\30\12"+
-            "\0\2\0\31\7\0\32\12\0\5\0\33\12\0\5\0\34\12\0\5\0\35\12\0\2\0"+
-            "\36\12\0\14\0\37\7\0\40\7\0!\1\0\6<init>\1\0\3()V\1\0\4Code\1"+
-            "\0\7_invoke\1\0K(Lorg/omg/CORBA/portable/OutputStream;)Lorg/o"+
-            "mg/CORBA/portable/InputStream;\1\0\12Exceptions\7\0\"\1\0\15_"+
-            "releaseReply\1\0'(Lorg/omg/CORBA/portable/InputStream;)V\14\0"+
-            "\15\0\16\1\0(com/sun/jmx/remote/internal/PInputStream\14\0\20"+
-            "\0\21\14\0\15\0\25\1\0+org/omg/CORBA/portable/ApplicationExce"+
-            "ption\14\0#\0$\14\0%\0&\14\0\15\0'\14\0(\0$\14\0\24\0\25\1\0%"+
-            "com/sun/jmx/remote/internal/ProxyStub\1\0<org/omg/stub/javax/"+
-            "management/remote/rmi/_RMIConnection_Stub\1\0)org/omg/CORBA/p"+
-            "ortable/RemarshalException\1\0\16getInputStream\1\0&()Lorg/om"+
-            "g/CORBA/portable/InputStream;\1\0\5getId\1\0\24()Ljava/lang/S"+
-            "tring;\1\09(Ljava/lang/String;Lorg/omg/CORBA/portable/InputSt"+
-            "ream;)V\1\0\25getProxiedInputStream\0!\0\13\0\14\0\0\0\0\0\3\0"+
-            "\1\0\15\0\16\0\1\0\17\0\0\0\21\0\1\0\1\0\0\0\5*\267\0\1\261\0"+
-            "\0\0\0\0\1\0\20\0\21\0\2\0\17\0\0\0;\0\4\0\4\0\0\0'\273\0\2Y*"+
-            "+\267\0\3\267\0\4\260M\273\0\2Y,\266\0\6\267\0\4N\273\0\5Y,\266"+
-            "\0\7-\267\0\10\277\0\1\0\0\0\14\0\15\0\5\0\0\0\22\0\0\0\6\0\2"+
-            "\0\5\0\23\0\1\0\24\0\25\0\1\0\17\0\0\0\36\0\2\0\2\0\0\0\22+\306"+
-            "\0\13+\300\0\2\266\0\11L*+\267\0\12\261\0\0\0\0\0\0";
+                "\312\376\272\276\0\0\0.\0)\12\0\14\0\26\7\0\27\12\0\14\0\30\12"+
+                "\0\2\0\31\7\0\32\12\0\5\0\33\12\0\5\0\34\12\0\5\0\35\12\0\2\0"+
+                "\36\12\0\14\0\37\7\0\40\7\0!\1\0\6<init>\1\0\3()V\1\0\4Code\1"+
+                "\0\7_invoke\1\0K(Lorg/omg/CORBA/portable/OutputStream;)Lorg/o"+
+                "mg/CORBA/portable/InputStream;\1\0\12Exceptions\7\0\"\1\0\15_"+
+                "releaseReply\1\0'(Lorg/omg/CORBA/portable/InputStream;)V\14\0"+
+                "\15\0\16\1\0(com/sun/jmx/remote/internal/PInputStream\14\0\20"+
+                "\0\21\14\0\15\0\25\1\0+org/omg/CORBA/portable/ApplicationExce"+
+                "ption\14\0#\0$\14\0%\0&\14\0\15\0'\14\0(\0$\14\0\24\0\25\1\0%"+
+                "com/sun/jmx/remote/internal/ProxyStub\1\0<org/omg/stub/javax/"+
+                "management/remote/rmi/_RMIConnection_Stub\1\0)org/omg/CORBA/p"+
+                "ortable/RemarshalException\1\0\16getInputStream\1\0&()Lorg/om"+
+                "g/CORBA/portable/InputStream;\1\0\5getId\1\0\24()Ljava/lang/S"+
+                "tring;\1\09(Ljava/lang/String;Lorg/omg/CORBA/portable/InputSt"+
+                "ream;)V\1\0\25getProxiedInputStream\0!\0\13\0\14\0\0\0\0\0\3\0"+
+                "\1\0\15\0\16\0\1\0\17\0\0\0\21\0\1\0\1\0\0\0\5*\267\0\1\261\0"+
+                "\0\0\0\0\1\0\20\0\21\0\2\0\17\0\0\0;\0\4\0\4\0\0\0'\273\0\2Y*"+
+                "+\267\0\3\267\0\4\260M\273\0\2Y,\266\0\6\267\0\4N\273\0\5Y,\266"+
+                "\0\7-\267\0\10\277\0\1\0\0\0\14\0\15\0\5\0\0\0\22\0\0\0\6\0\2"+
+                "\0\5\0\23\0\1\0\24\0\25\0\1\0\17\0\0\0\36\0\2\0\2\0\0\0\22+\306"+
+                "\0\13+\300\0\2\266\0\11L*+\267\0\12\261\0\0\0\0\0\0";
         final String pInputStreamByteCodeString =
-            "\312\376\272\276\0\0\0.\0\36\12\0\7\0\17\11\0\6\0\20\12\0\21\0"+
-            "\22\12\0\6\0\23\12\0\24\0\25\7\0\26\7\0\27\1\0\6<init>\1\0'(L"+
-            "org/omg/CORBA/portable/InputStream;)V\1\0\4Code\1\0\10read_an"+
-            "y\1\0\25()Lorg/omg/CORBA/Any;\1\0\12read_value\1\0)(Ljava/lan"+
-            "g/Class;)Ljava/io/Serializable;\14\0\10\0\11\14\0\30\0\31\7\0"+
-            "\32\14\0\13\0\14\14\0\33\0\34\7\0\35\14\0\15\0\16\1\0(com/sun"+
-            "/jmx/remote/internal/PInputStream\1\0,com/sun/jmx/remote/inte"+
-            "rnal/ProxyInputStream\1\0\2in\1\0$Lorg/omg/CORBA/portable/Inp"+
-            "utStream;\1\0\"org/omg/CORBA/portable/InputStream\1\0\6narrow"+
-            "\1\0*()Lorg/omg/CORBA_2_3/portable/InputStream;\1\0&org/omg/C"+
-            "ORBA_2_3/portable/InputStream\0!\0\6\0\7\0\0\0\0\0\3\0\1\0\10"+
-            "\0\11\0\1\0\12\0\0\0\22\0\2\0\2\0\0\0\6*+\267\0\1\261\0\0\0\0"+
-            "\0\1\0\13\0\14\0\1\0\12\0\0\0\24\0\1\0\1\0\0\0\10*\264\0\2\266"+
-            "\0\3\260\0\0\0\0\0\1\0\15\0\16\0\1\0\12\0\0\0\25\0\2\0\2\0\0\0"+
-            "\11*\266\0\4+\266\0\5\260\0\0\0\0\0\0";
+                "\312\376\272\276\0\0\0.\0\36\12\0\7\0\17\11\0\6\0\20\12\0\21\0"+
+                "\22\12\0\6\0\23\12\0\24\0\25\7\0\26\7\0\27\1\0\6<init>\1\0'(L"+
+                "org/omg/CORBA/portable/InputStream;)V\1\0\4Code\1\0\10read_an"+
+                "y\1\0\25()Lorg/omg/CORBA/Any;\1\0\12read_value\1\0)(Ljava/lan"+
+                "g/Class;)Ljava/io/Serializable;\14\0\10\0\11\14\0\30\0\31\7\0"+
+                "\32\14\0\13\0\14\14\0\33\0\34\7\0\35\14\0\15\0\16\1\0(com/sun"+
+                "/jmx/remote/internal/PInputStream\1\0,com/sun/jmx/remote/inte"+
+                "rnal/ProxyInputStream\1\0\2in\1\0$Lorg/omg/CORBA/portable/Inp"+
+                "utStream;\1\0\"org/omg/CORBA/portable/InputStream\1\0\6narrow"+
+                "\1\0*()Lorg/omg/CORBA_2_3/portable/InputStream;\1\0&org/omg/C"+
+                "ORBA_2_3/portable/InputStream\0!\0\6\0\7\0\0\0\0\0\3\0\1\0\10"+
+                "\0\11\0\1\0\12\0\0\0\22\0\2\0\2\0\0\0\6*+\267\0\1\261\0\0\0\0"+
+                "\0\1\0\13\0\14\0\1\0\12\0\0\0\24\0\1\0\1\0\0\0\10*\264\0\2\266"+
+                "\0\3\260\0\0\0\0\0\1\0\15\0\16\0\1\0\12\0\0\0\25\0\2\0\2\0\0\0"+
+                "\11*\266\0\4+\266\0\5\260\0\0\0\0\0\0";
         final byte[] proxyStubByteCode =
-            NoCallStackClassLoader.stringToBytes(proxyStubByteCodeString);
+                NoCallStackClassLoader.stringToBytes(proxyStubByteCodeString);
         final byte[] pInputStreamByteCode =
-            NoCallStackClassLoader.stringToBytes(pInputStreamByteCodeString);
+                NoCallStackClassLoader.stringToBytes(pInputStreamByteCodeString);
         final String[] classNames={proxyStubClassName, pInputStreamClassName};
         final byte[][] byteCodes = {proxyStubByteCode, pInputStreamByteCode};
         final String[] otherClassNames = {
@@ -2386,13 +2388,13 @@
                 Class thisClass = RMIConnector.class;
                 ClassLoader thisLoader = thisClass.getClassLoader();
                 ProtectionDomain thisProtectionDomain =
-                    thisClass.getProtectionDomain();
+                        thisClass.getProtectionDomain();
                 ClassLoader cl =
-                    new NoCallStackClassLoader(classNames,
-                                               byteCodes,
-                                               otherClassNames,
-                                               thisLoader,
-                                               thisProtectionDomain);
+                        new NoCallStackClassLoader(classNames,
+                        byteCodes,
+                        otherClassNames,
+                        thisLoader,
+                        thisProtectionDomain);
                 return cl.loadClass(proxyStubClassName);
             }
         };
@@ -2401,7 +2403,7 @@
             stubClass = AccessController.doPrivileged(action);
         } catch (Exception e) {
             logger.error("<clinit>",
-                   "Unexpected exception making shadow IIOP stub class: "+e);
+                    "Unexpected exception making shadow IIOP stub class: "+e);
             logger.debug("<clinit>",e);
             stubClass = null;
         }
@@ -2409,15 +2411,15 @@
     }
 
     private static RMIConnection shadowIiopStub(Stub stub)
-            throws InstantiationException, IllegalAccessException {
+    throws InstantiationException, IllegalAccessException {
         Stub proxyStub = (Stub) proxyStubClass.newInstance();
         proxyStub._set_delegate(stub._get_delegate());
         return (RMIConnection) proxyStub;
     }
 
     private static RMIConnection getConnection(RMIServer server,
-                                               Object credentials,
-                                               boolean checkStub)
+            Object credentials,
+            boolean checkStub)
             throws IOException {
         RMIConnection c = server.newClient(credentials);
         if (checkStub) checkStub(c, rmiConnectionImplStubClass);
@@ -2427,14 +2429,14 @@
             if (c.getClass().getName().equals(iiopConnectionStubClassName))
                 return shadowIiopStub((Stub) c);
             logger.trace("getConnection",
-                         "Did not wrap " + c.getClass() + " to foil " +
-                         "stack search for classes: class loading semantics " +
-                         "may be incorrect");
+                    "Did not wrap " + c.getClass() + " to foil " +
+                    "stack search for classes: class loading semantics " +
+                    "may be incorrect");
         } catch (Exception e) {
             logger.error("getConnection",
-                         "Could not wrap " + c.getClass() + " to foil " +
-                         "stack search for classes: class loading semantics " +
-                         "may be incorrect: " + e);
+                    "Could not wrap " + c.getClass() + " to foil " +
+                    "stack search for classes: class loading semantics " +
+                    "may be incorrect: " + e);
             logger.debug("getConnection",e);
             // so just return the original stub, which will work for all
             // but the most exotic class loading situations
@@ -2447,7 +2449,7 @@
         int numGroups = sLen/4;
         if (4*numGroups != sLen)
             throw new IllegalArgumentException(
-                "String length must be a multiple of four.");
+                    "String length must be a multiple of four.");
         int missingBytesInLastGroup = 0;
         int numFullGroups = numGroups;
         if (sLen != 0) {
@@ -2533,21 +2535,21 @@
         final ClassLoader old =  t.getContextClassLoader();
         if (defaultClassLoader != null)
             AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                    public Void run() {
-                        t.setContextClassLoader(defaultClassLoader);
-                        return null;
-                    }
-                });
-        return old;
+                public Void run() {
+                    t.setContextClassLoader(defaultClassLoader);
+                    return null;
+                }
+            });
+            return old;
     }
 
     private void popDefaultClassLoader(final ClassLoader old) {
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                public Void run() {
-                    Thread.currentThread().setContextClassLoader(old);
-                    return null;
-                }
-            });
+            public Void run() {
+                Thread.currentThread().setContextClassLoader(old);
+                return null;
+            }
+        });
     }
 
     //--------------------------------------------------------------------
--- a/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -383,7 +383,7 @@
         try {
             if (tracing) logger.trace("start", "setting default class loader");
             defaultClassLoader = EnvHelp.resolveServerClassLoader(
-                    attributes, getSystemMBeanServer());
+                    attributes, getSystemMBeanServerForwarder());
         } catch (InstanceNotFoundException infc) {
             IllegalArgumentException x = new
                 IllegalArgumentException("ClassLoader not found: "+infc);
@@ -398,7 +398,7 @@
         else
             rmiServer = newServer();
 
-        rmiServer.setMBeanServer(getSystemMBeanServer());
+        rmiServer.setMBeanServer(getSystemMBeanServerForwarder());
         rmiServer.setDefaultClassLoader(defaultClassLoader);
         rmiServer.setRMIConnectorServer(this);
         rmiServer.export();
@@ -423,7 +423,7 @@
                 try {
                     if (tracing) logger.trace("start", "binding to " + jndiUrl);
 
-                    final Hashtable usemap = EnvHelp.mapToHashtable(attributes);
+                    final Hashtable<?, ?> usemap = EnvHelp.mapToHashtable(attributes);
 
                     bind(jndiUrl, usemap, objref, rebind);
 
@@ -555,7 +555,7 @@
                     logger.trace("stop",
                           "unbind from external directory: " + boundJndiUrl);
 
-                final Hashtable usemap = EnvHelp.mapToHashtable(attributes);
+                final Hashtable<?, ?> usemap = EnvHelp.mapToHashtable(attributes);
 
                 InitialContext ctx =
                     new InitialContext(usemap);
@@ -592,31 +592,6 @@
         return Collections.unmodifiableMap(map);
     }
 
-    @Override
-    public synchronized void setMBeanServerForwarder(MBeanServerForwarder mbsf) {
-        MBeanServer oldSMBS = getSystemMBeanServer();
-        super.setMBeanServerForwarder(mbsf);
-        if (oldSMBS != getSystemMBeanServer())
-            updateMBeanServer();
-        // If the system chain of MBeanServerForwarders is not empty, then
-        // there is no need to call rmiServerImpl.setMBeanServer, because
-        // it is pointing to the head of the system chain and that has not
-        // changed.  (The *end* of the system chain will have been changed
-        // to point to mbsf.)
-    }
-
-    private void updateMBeanServer() {
-        if (rmiServerImpl != null)
-            rmiServerImpl.setMBeanServer(getSystemMBeanServer());
-    }
-
-    @Override
-    public synchronized void setSystemMBeanServerForwarder(
-            MBeanServerForwarder mbsf) {
-        super.setSystemMBeanServerForwarder(mbsf);
-        updateMBeanServer();
-    }
-
     /**
      * {@inheritDoc}
      * @return true, since this connector server does support a system chain
@@ -627,20 +602,43 @@
         return true;
     }
 
+    /**
+     * {@inheritDoc}
+     * <P>The {@code RMIConnectorServer} class does support closing a specified
+     * client connection.
+     * @throws IllegalStateException if the server is not started or is closed.
+     * @throws IllegalArgumentException if {@code connectionId} is null or is
+     * not the id of any open connection.
+     * @since 1.7
+     */
+    @Override
+    public void closeConnection(String connectionId)
+            throws IOException {
+        if (isActive()) {
+            rmiServerImpl.closeConnection(connectionId);
+        } else {
+            throw new IllegalStateException(
+                    "The server is not started or is closed.");
+        }
+    }
+
     /* We repeat the definitions of connection{Opened,Closed,Failed}
        here so that they are accessible to other classes in this package
        even though they have protected access.  */
 
+    @Override
     protected void connectionOpened(String connectionId, String message,
                                     Object userData) {
         super.connectionOpened(connectionId, message, userData);
     }
 
+    @Override
     protected void connectionClosed(String connectionId, String message,
                                     Object userData) {
         super.connectionClosed(connectionId, message, userData);
     }
 
+    @Override
     protected void connectionFailed(String connectionId, String message,
                                     Object userData) {
         super.connectionFailed(connectionId, message, userData);
@@ -655,7 +653,7 @@
      * @param rmiServer The object to bind in the registry
      * @param rebind true if the object must be rebound.
      **/
-    void bind(String jndiUrl, Hashtable attributes,
+    void bind(String jndiUrl, Hashtable<?, ?> attributes,
               RMIServer rmiServer, boolean rebind)
         throws NamingException, MalformedURLException {
         // if jndiURL is not null, we nust bind the stub to a
@@ -692,7 +690,8 @@
      * @param attributes A Map containing environment parameters,
      *        built from the Map specified at this object creation.
      **/
-    private void encodeStubInAddress(RMIServer rmiServer, Map attributes)
+    private void encodeStubInAddress(
+            RMIServer rmiServer, Map<String, ?> attributes)
             throws IOException {
 
         final String protocol, host;
@@ -735,14 +734,16 @@
     /**
      * Returns the IOR of the given rmiServer.
      **/
-    static String encodeStub(RMIServer rmiServer, Map env) throws IOException {
+    static String encodeStub(
+            RMIServer rmiServer, Map<String, ?> env) throws IOException {
         if (rmiServer instanceof javax.rmi.CORBA.Stub)
             return "/ior/" + encodeIIOPStub(rmiServer, env);
         else
             return "/stub/" + encodeJRMPStub(rmiServer, env);
     }
 
-    static String encodeJRMPStub(RMIServer rmiServer, Map env)
+    static String encodeJRMPStub(
+            RMIServer rmiServer, Map<String, ?> env)
             throws IOException {
         ByteArrayOutputStream bout = new ByteArrayOutputStream();
         ObjectOutputStream oout = new ObjectOutputStream(bout);
@@ -752,7 +753,8 @@
         return byteArrayToBase64(bytes);
     }
 
-    static String encodeIIOPStub(RMIServer rmiServer, Map env)
+    static String encodeIIOPStub(
+            RMIServer rmiServer, Map<String, ?> env)
             throws IOException {
         try {
             javax.rmi.CORBA.Stub stub =
@@ -767,7 +769,8 @@
      * Object that we will bind to the registry.
      * This object is a stub connected to our RMIServerImpl.
      **/
-    private static RMIServer objectToBind(RMIServerImpl rmiServer, Map env)
+    private static RMIServer objectToBind(
+            RMIServerImpl rmiServer, Map<String, ?> env)
         throws IOException {
         return RMIConnector.
             connectStub((RMIServer)rmiServer.toStub(),env);
--- a/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -38,6 +38,9 @@
 import javax.security.auth.Subject;
 
 import com.sun.jmx.remote.internal.RMIExporter;
+import com.sun.jmx.remote.util.EnvHelp;
+import sun.rmi.server.UnicastServerRef;
+import sun.rmi.server.UnicastServerRef2;
 
 /**
  * <p>An {@link RMIServer} object that is exported through JRMP and that
@@ -93,12 +96,27 @@
     }
 
     private void export(Remote obj) throws RemoteException {
-        RMIExporter exporter =
+        final RMIExporter exporter =
             (RMIExporter) env.get(RMIExporter.EXPORTER_ATTRIBUTE);
-        if (exporter == null)
+        final boolean daemon = EnvHelp.isServerDaemon(env);
+
+        if (daemon && exporter != null) {
+            throw new IllegalArgumentException("If "+EnvHelp.JMX_SERVER_DAEMON+
+                    " is specified as true, "+RMIExporter.EXPORTER_ATTRIBUTE+
+                    " cannot be used to specify an exporter!");
+        }
+
+        if (daemon) {
+            if (csf == null && ssf == null) {
+                new UnicastServerRef(port).exportObject(obj, null, true);
+            } else {
+                new UnicastServerRef2(port, csf, ssf).exportObject(obj, null, true);
+            }
+        } else if (exporter != null) {
+            exporter.exportObject(obj, port, csf, ssf);
+        } else {
             UnicastRemoteObject.exportObject(obj, port, csf, ssf);
-        else
-            exporter.exportObject(obj, port, csf, ssf);
+        }
     }
 
     private void unexport(Remote obj, boolean force)
--- a/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
@@ -75,7 +75,7 @@
      * to an empty Map.
      */
     public RMIServerImpl(Map<String,?> env) {
-        this.env = (env == null) ? Collections.EMPTY_MAP : env;
+        this.env = (env == null) ? Collections.<String,Object>emptyMap() : env;
     }
 
     void setRMIConnectorServer(RMIConnectorServer connServer)
@@ -249,14 +249,21 @@
 
         RMIConnection client = makeClient(connectionId, subject);
 
-        connServer.connectionOpened(connectionId, "Connection opened", null);
-
         dropDeadReferences();
         WeakReference<RMIConnection> wr = new WeakReference<RMIConnection>(client);
         synchronized (clientList) {
             clientList.add(wr);
         }
 
+        connServer.connectionOpened(connectionId, "Connection opened", null);
+
+        synchronized (clientList) {
+            if (!clientList.contains(wr)) {
+                // can be removed only by a JMXConnectionNotification listener
+                throw new IOException("The connection is refused.");
+            }
+        }
+
         if (tracing)
             logger.trace("newClient","new connection done: " + connectionId );
 
@@ -264,6 +271,52 @@
     }
 
     /**
+     * Closes a client connection.
+     * @param connectionId the id of the client connection to be closed.
+     * @throws IllegalArgumentException if {@code connectionId} is null or is
+     * not the id of any open connection.
+     * @throws java.io.IOException if an I/O error appears when closing the
+     * connection.
+     *
+     * @since 1.7
+     */
+    public void closeConnection(String connectionId)
+            throws IOException {
+        final boolean debug = logger.debugOn();
+
+        if (debug) logger.trace("closeConnection","cconnectionId="+connectionId);
+
+        if (connectionId == null)
+            throw new IllegalArgumentException("Null connectionId.");
+
+        RMIConnection client = null;
+        synchronized (clientList) {
+            dropDeadReferences();
+            for (Iterator<WeakReference<RMIConnection>> it = clientList.iterator();
+                 it.hasNext(); ) {
+                client = it.next().get();
+                if (client != null && connectionId.equals(client.getConnectionId())) {
+                    it.remove();
+                    break;
+                }
+            }
+        }
+
+        if (client == null) {
+            throw new IllegalArgumentException("Unknown id: "+connectionId);
+        }
+
+        if (debug) logger.trace("closeConnection", "closing client connection.");
+        closeClient(client);
+
+        if (debug) logger.trace("closeConnection", "sending notif");
+        connServer.connectionClosed(connectionId,
+                                    "Client connection closed", null);
+
+        if (debug) logger.trace("closeConnection","done");
+    }
+
+    /**
      * <p>Creates a new client connection.  This method is called by
      * the public method {@link #newClient(Object)}.</p>
      *
@@ -337,8 +390,9 @@
 
         synchronized (clientList) {
             dropDeadReferences();
-            for (Iterator it = clientList.iterator(); it.hasNext(); ) {
-                WeakReference wr = (WeakReference) it.next();
+            for (Iterator<WeakReference<RMIConnection>> it = clientList.iterator();
+                 it.hasNext(); ) {
+                WeakReference<RMIConnection> wr = it.next();
                 if (wr.get() == client) {
                     it.remove();
                     break;
@@ -417,9 +471,10 @@
                    dropDeadReferences(), this will usually be the first
                    element of the list, but a garbage collection could have
                    happened in between.  */
-                for (Iterator it = clientList.iterator(); it.hasNext(); ) {
-                    WeakReference wr = (WeakReference) it.next();
-                    RMIConnection client = (RMIConnection) wr.get();
+                for (Iterator<WeakReference<RMIConnection>> it = clientList.iterator();
+                     it.hasNext(); ) {
+                    WeakReference<RMIConnection> wr = it.next();
+                    RMIConnection client = wr.get();
                     it.remove();
                     if (client != null) {
                         try {
@@ -475,10 +530,10 @@
             buf.append("//").append(clientHost);
         buf.append(" ");
         if (subject != null) {
-            Set principals = subject.getPrincipals();
+            Set<Principal> principals = subject.getPrincipals();
             String sep = "";
-            for (Iterator it = principals.iterator(); it.hasNext(); ) {
-                Principal p = (Principal) it.next();
+            for (Iterator<Principal> it = principals.iterator(); it.hasNext(); ) {
+                Principal p = it.next();
                 String name = p.getName().replace(' ', '_').replace(';', ':');
                 buf.append(sep).append(name);
                 sep = ";";
@@ -492,8 +547,9 @@
 
     private void dropDeadReferences() {
         synchronized (clientList) {
-            for (Iterator it = clientList.iterator(); it.hasNext(); ) {
-                WeakReference wr = (WeakReference) it.next();
+            for (Iterator<WeakReference<RMIConnection>> it = clientList.iterator();
+                 it.hasNext(); ) {
+                WeakReference<RMIConnection> wr = it.next();
                 if (wr.get() == null)
                     it.remove();
             }
@@ -522,7 +578,7 @@
 
     private MBeanServer mbeanServer;
 
-    private final Map env;
+    private final Map<String, ?> env;
 
     private RMIConnectorServer connServer;
 
--- a/src/share/classes/javax/management/timer/Timer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/management/timer/Timer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -248,8 +248,7 @@
      */
     public synchronized MBeanNotificationInfo[] getNotificationInfo() {
         Set<String> notifTypes = new TreeSet<String>();
-        for (Iterator it = timerTable.values().iterator(); it.hasNext(); ) {
-            Object[] entry = (Object[]) it.next();
+        for (Object[] entry : timerTable.values()) {
             TimerNotification notif = (TimerNotification)
                 entry[TIMER_NOTIF_INDEX];
             notifTypes.add(notif.getType());
--- a/src/share/classes/javax/swing/AbstractCellEditor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/AbstractCellEditor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/AbstractListModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/AbstractListModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/AbstractSpinnerModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/AbstractSpinnerModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/ActionMap.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/ActionMap.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/AncestorNotifier.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/AncestorNotifier.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/ArrayTable.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/ArrayTable.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/ButtonGroup.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/ButtonGroup.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/DefaultBoundedRangeModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/DefaultBoundedRangeModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/DefaultButtonModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/DefaultButtonModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/DefaultFocusManager.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/DefaultFocusManager.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/DefaultSingleSelectionModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/DefaultSingleSelectionModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/GroupLayout.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/GroupLayout.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/InputMap.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/InputMap.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JDesktopPane.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JDesktopPane.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JDialog.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JDialog.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JLayeredPane.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JLayeredPane.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JMenu.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JMenu.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JMenuItem.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JMenuItem.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JSpinner.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JSpinner.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JTextField.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JTextField.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JTree.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JTree.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/JWindow.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/JWindow.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/KeyboardManager.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/KeyboardManager.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/LayoutComparator.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/LayoutComparator.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2002 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/MultiUIDefaults.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/MultiUIDefaults.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/RepaintManager.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/RepaintManager.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/SpringLayout.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/SpringLayout.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/Timer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/Timer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/TimerQueue.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/TimerQueue.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/UIDefaults.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/UIDefaults.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/UIManager.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/UIManager.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/border/CompoundBorder.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/border/CompoundBorder.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicButtonListener.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicButtonListener.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicMenuUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicMenuUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/metal/MetalBumps.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/metal/MetalBumps.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/metal/MetalToolBarUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/metal/MetalToolBarUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/DefaultSynthStyleFactory.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/DefaultSynthStyleFactory.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/ImagePainter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/ImagePainter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/Region.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/Region.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthContext.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthContext.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthEditorPaneUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthEditorPaneUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthParser.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthParser.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthStyle.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthStyle.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/table/AbstractTableModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/table/AbstractTableModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/table/DefaultTableModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/table/DefaultTableModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/AsyncBoxView.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/AsyncBoxView.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/ComponentView.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/ComponentView.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/DefaultCaret.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/DefaultCaret.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/DefaultFormatter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/DefaultFormatter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/DefaultHighlighter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/DefaultHighlighter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/DefaultStyledDocument.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/DefaultStyledDocument.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/ElementIterator.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/ElementIterator.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2002 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/GapContent.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/GapContent.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/InternationalFormatter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/InternationalFormatter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/LayoutQueue.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/LayoutQueue.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/MaskFormatter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/MaskFormatter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/SegmentCache.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/SegmentCache.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/SimpleAttributeSet.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/SimpleAttributeSet.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/StringContent.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/StringContent.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2001 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/StyleContext.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/StyleContext.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/TableView.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/TableView.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/TextAction.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/TextAction.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/TextLayoutStrategy.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/TextLayoutStrategy.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/ZoneView.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/ZoneView.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/HRuleView.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/HRuleView.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2002 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/HTML.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/HTML.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/HTMLDocument.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/HTMLDocument.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/HTMLWriter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/HTMLWriter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/Map.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/Map.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/MinimalHTMLWriter.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/MinimalHTMLWriter.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-1999 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/OptionListModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/OptionListModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2000 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/StyleSheet.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/StyleSheet.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/TableView.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/TableView.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/html/parser/TagStack.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/html/parser/TagStack.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/rtf/MockAttributeSet.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/rtf/MockAttributeSet.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/rtf/RTFParser.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/rtf/RTFParser.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2000 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/text/rtf/RTFReader.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/text/rtf/RTFReader.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/tree/DefaultTreeModel.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/tree/DefaultTreeModel.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/undo/StateEdit.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/undo/StateEdit.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/undo/UndoManager.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/undo/UndoManager.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/javax/swing/undo/UndoableEditSupport.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/javax/swing/undo/UndoableEditSupport.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/org/jcp/xml/dsig/internal/DigesterOutputStream.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/DigesterOutputStream.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DigesterOutputStream.java,v 1.2 2008/07/24 15:20:31 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/SignerOutputStream.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/SignerOutputStream.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: SignerOutputStream.java,v 1.2 2008/07/24 15:20:31 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: ApacheCanonicalizer.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheData.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheData.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: ApacheData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: ApacheNodeSetData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: ApacheOctetStreamData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: ApacheTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMBase64Transform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMCanonicalXMLC14NMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMCanonicalizationMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMCryptoBinary.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMDigestMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMEnvelopedTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMExcC14NMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMHMACSignatureMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMKeyInfo.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMKeyInfoFactory.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyName.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyName.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMKeyName.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMKeyValue.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMManifest.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMPGPData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMSignatureMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMSignatureProperties.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMSignatureProperty.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMSignedInfo.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMStructure.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMStructure.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMStructure.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMSubTreeData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMURIDereferencer.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMUtils.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMX509Data.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMX509IssuerSerial.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMXMLObject.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMXMLSignatureFactory.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMXPathTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: DOMXSLTTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/org/jcp/xml/dsig/internal/dom/Utils.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/Utils.java	Thu Jan 29 18:33:52 2009 -0800
@@ -19,7 +19,7 @@
  *
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
  */
 /*
  * $Id: Utils.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/src/share/classes/sun/awt/im/CompositionArea.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/awt/im/CompositionArea.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/io/ByteToCharCp850.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/io/ByteToCharCp850.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2002 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,6 @@
  * have any questions.
  */
 
-
 package sun.io;
 
 import sun.nio.cs.IBM850;
@@ -32,6 +31,7 @@
  * A table to convert to Cp850 to Unicode
  *
  * @author  ConverterGenerator tool
+ * @version >= JDK1.1.6
  */
 
 public class ByteToCharCp850 extends ByteToCharSingleByte {
@@ -41,6 +41,6 @@
     }
 
     public ByteToCharCp850() {
-        super.byteToCharTable = IBM850.getDecoderSingleByteMappings();
+        super.byteToCharTable = new IBM850().getDecoderSingleByteMappings();
     }
 }
--- a/src/share/classes/sun/io/CharToByteJIS0201.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/io/CharToByteJIS0201.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-1998 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  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
@@ -29,6 +29,7 @@
  * Tables and data to convert Unicode to JIS0201
  *
  * @author  ConverterGenerator tool
+ * @version >= JDK1.1.6
  */
 
 class CharToByteJIS0201 extends CharToByteSingleByte {
@@ -41,8 +42,21 @@
         super.mask1 = 0xFF00;
         super.mask2 = 0x00FF;
         super.shift = 8;
+        /*
         super.index1 = index1;
         super.index2 = index2;
+        */
+    }
+
+    public byte getNative(char inputChar) {
+        return (byte)index2.charAt(index1[(inputChar & mask1) >> shift]
+                + (inputChar & mask2));
+    }
+
+   public boolean canConvert(char ch) {
+        if (index2.charAt(index1[((ch & mask1) >> shift)] + (ch & mask2)) != '\u0000')
+            return true;
+        return (ch == '\u0000');
     }
 
     private final static String index2 =
--- a/src/share/classes/sun/io/CharToByteSingleByte.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/io/CharToByteSingleByte.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2002 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  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
@@ -25,6 +25,8 @@
 
 package sun.io;
 
+import static sun.nio.cs.CharsetMapping.*;
+
 /**
 * A table driven conversion from char to byte for single byte
 * character sets.  Tables will reside in the class CharToByteYYYYY,
@@ -35,6 +37,7 @@
 *
 * @author Lloyd Honomichl
 * @author Asmus Freytag
+* @version 8/28/96
 */
 
 public abstract class CharToByteSingleByte extends CharToByteConverter {
@@ -42,12 +45,12 @@
     /*
      * 1st level index, provided by subclass
      */
-    protected short index1[];
+    protected char[] index1;
 
     /*
      * 2nd level index, provided by subclass
      */
-    protected String  index2;
+    protected char[] index2;
 
     /*
      * Mask to isolate bits for 1st level index, from subclass
@@ -66,11 +69,11 @@
 
     private char highHalfZoneCode;
 
-    public short[] getIndex1() {
+    public char[] getIndex1() {
         return index1;
     }
 
-    public String getIndex2() {
+    public char[] getIndex2() {
         return index2;
     }
     public int flush(byte[] output, int outStart, int outEnd)
@@ -229,9 +232,18 @@
         return 1;
     }
 
+    int encodeChar(char ch) {
+        char index = index1[ch >> 8];
+        if (index == UNMAPPABLE_ENCODING)
+            return UNMAPPABLE_ENCODING;
+        return index2[index + (ch & 0xff)];
+    }
+
     public byte getNative(char inputChar) {
-        return (byte)index2.charAt(index1[(inputChar & mask1) >> shift]
-                + (inputChar & mask2));
+        int b = encodeChar(inputChar);
+        if (b == UNMAPPABLE_ENCODING)
+            return 0;
+        return (byte)b;
     }
 
     /**
@@ -248,11 +260,6 @@
      * @return true if a character is mappable
      */
     public boolean canConvert(char ch) {
-        // Look it up in the table
-        if (index2.charAt(index1[((ch & mask1) >> shift)] + (ch & mask2)) != '\u0000')
-            return true;
-
-        // Nulls are always mappable
-        return (ch == '\u0000');
+        return encodeChar(ch) != UNMAPPABLE_ENCODING;
     }
 }
--- a/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java	Thu Jan 29 18:33:52 2009 -0800
@@ -80,7 +80,7 @@
 import static sun.management.AgentConfigurationError.*;
 import sun.management.ConnectorAddressLink;
 import sun.management.FileSystem;
-import sun.management.snmp.util.MibLogger;
+import com.sun.jmx.remote.util.ClassLogger;
 
 import com.sun.jmx.remote.internal.RMIExporter;
 import com.sun.jmx.remote.security.JMXPluggableAuthenticator;
@@ -99,6 +99,7 @@
         public static final String PORT = "0";
         public static final String CONFIG_FILE_NAME = "management.properties";
         public static final String USE_SSL = "true";
+        public static final String USE_LOCAL_ONLY = "true";
         public static final String USE_REGISTRY_SSL = "false";
         public static final String USE_AUTHENTICATION = "true";
         public static final String PASSWORD_FILE_NAME = "jmxremote.password";
@@ -115,6 +116,8 @@
                 "com.sun.management.jmxremote.port";
         public static final String CONFIG_FILE_NAME =
                 "com.sun.management.config.file";
+        public static final String USE_LOCAL_ONLY =
+                "com.sun.management.jmxremote.local.only";
         public static final String USE_SSL =
                 "com.sun.management.jmxremote.ssl";
         public static final String USE_REGISTRY_SSL =
@@ -384,7 +387,7 @@
             checkAccessFile(accessFileName);
         }
 
-        if (log.isDebugOn()) {
+        if (log.debugOn()) {
             log.debug("initialize",
                     Agent.getText("jmxremote.ConnectorBootstrap.initialize") +
                     "\n\t" + PropertyNames.PORT + "=" + port +
@@ -477,6 +480,18 @@
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
         try {
             JMXServiceURL url = new JMXServiceURL("rmi", localhost, 0);
+            // Do we accept connections from local interfaces only?
+            Properties props = Agent.getManagementProperties();
+            if (props ==  null) {
+                props = new Properties();
+            }
+            String useLocalOnlyStr = props.getProperty(
+                    PropertyNames.USE_LOCAL_ONLY, DefaultValues.USE_LOCAL_ONLY);
+            boolean useLocalOnly = Boolean.valueOf(useLocalOnlyStr).booleanValue();
+            if (useLocalOnly) {
+                env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE,
+                        new LocalRMIServerSocketFactory());
+            }
             JMXConnectorServer server =
                     JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbs);
             server.start();
@@ -764,7 +779,7 @@
     private ConnectorBootstrap() {
     }
 
-    // XXX Revisit: should probably clone this MibLogger....
-    private static final MibLogger log =
-            new MibLogger(ConnectorBootstrap.class);
+    private static final ClassLogger log =
+        new ClassLogger(ConnectorBootstrap.class.getPackage().getName(),
+                        "ConnectorBootstrap");
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/management/jmxremote/LocalRMIServerSocketFactory.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.management.jmxremote;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketException;
+import java.rmi.server.RMIServerSocketFactory;
+import java.util.Enumeration;
+
+/**
+ * This RMI server socket factory creates server sockets that
+ * will only accept connection requests from clients running
+ * on the host where the RMI remote objects have been exported.
+ */
+public final class LocalRMIServerSocketFactory implements RMIServerSocketFactory {
+    /**
+     * Creates a server socket that only accepts connection requests from
+     * clients running on the host where the RMI remote objects have been
+     * exported.
+     */
+    public ServerSocket createServerSocket(int port) throws IOException {
+        return new ServerSocket(port) {
+            @Override
+            public Socket accept() throws IOException {
+                final Socket socket = super.accept();
+                final InetAddress remoteAddr = socket.getInetAddress();
+                final String msg = "The server sockets created using the " +
+                       "LocalRMIServerSocketFactory only accept connections " +
+                       "from clients running on the host where the RMI " +
+                       "remote objects have been exported.";
+
+                if (remoteAddr == null) {
+                    // Though unlikeky, the socket could be already
+                    // closed... Send a more detailed message in
+                    // this case. Also avoid throwing NullPointerExceptiion
+                    //
+                    String details = "";
+                    if (socket.isClosed()) {
+                        details = " Socket is closed.";
+                    } else if (!socket.isConnected()) {
+                        details = " Socket is not connected";
+                    }
+                    try {
+                        socket.close();
+                    } catch (Exception ok) {
+                        // ok - this is just cleanup before throwing detailed
+                        // exception.
+                    }
+                    throw new IOException(msg +
+                            " Couldn't determine client address." +
+                            details);
+                } else if (remoteAddr.isLoopbackAddress()) {
+                    // local address: accept the connection.
+                    return socket;
+                }
+                // Retrieve all the network interfaces on this host.
+                Enumeration<NetworkInterface> nis;
+                try {
+                    nis = NetworkInterface.getNetworkInterfaces();
+                } catch (SocketException e) {
+                    try {
+                        socket.close();
+                    } catch (IOException ioe) {
+                        // Ignore...
+                    }
+                    throw new IOException(msg, e);
+                }
+                // Walk through the network interfaces to see
+                // if any of them matches the client's address.
+                // If true, then the client's address is local.
+                while (nis.hasMoreElements()) {
+                    NetworkInterface ni = nis.nextElement();
+                    Enumeration<InetAddress> addrs = ni.getInetAddresses();
+                    while (addrs.hasMoreElements()) {
+                        InetAddress localAddr = addrs.nextElement();
+                        if (localAddr.equals(remoteAddr)) {
+                            return socket;
+                        }
+                    }
+                }
+                // The client's address is remote so refuse the connection.
+                try {
+                    socket.close();
+                } catch (IOException ioe) {
+                    // Ignore...
+                }
+                throw new IOException(msg);
+            }
+        };
+    }
+
+    /**
+     * Two LocalRMIServerSocketFactory objects
+     * are equal if they are of the same type.
+     */
+    @Override
+    public boolean equals(Object obj) {
+        return (obj instanceof LocalRMIServerSocketFactory);
+    }
+
+    /**
+     * Returns a hash code value for this LocalRMIServerSocketFactory.
+     */
+    @Override
+    public int hashCode() {
+        return getClass().hashCode();
+    }
+}
--- a/src/share/classes/sun/net/ProgressEvent.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/net/ProgressEvent.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2004-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/net/httpserver/ExchangeImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/net/httpserver/ExchangeImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
@@ -43,7 +43,7 @@
     String method;
     URI uri;
     HttpConnection connection;
-    int reqContentLen;
+    long reqContentLen;
     long rspContentLen;
     /* raw streams which access the socket directly */
     InputStream ris;
@@ -79,7 +79,7 @@
     ServerImpl server;
 
     ExchangeImpl (
-        String m, URI u, Request req, int len, HttpConnection connection
+        String m, URI u, Request req, long len, HttpConnection connection
     ) throws IOException {
         this.req = req;
         this.reqHdrs = req.headers();
@@ -148,7 +148,7 @@
         if (uis != null) {
             return uis;
         }
-        if (reqContentLen == -1) {
+        if (reqContentLen == -1L) {
             uis_orig = new ChunkedInputStream (this, ris);
             uis = uis_orig;
         } else {
--- a/src/share/classes/sun/net/httpserver/FixedLengthInputStream.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/net/httpserver/FixedLengthInputStream.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
@@ -37,21 +37,21 @@
  */
 
 class FixedLengthInputStream extends LeftOverInputStream {
-    private int remaining;
+    private long remaining;
 
-    FixedLengthInputStream (ExchangeImpl t, InputStream src, int len) {
+    FixedLengthInputStream (ExchangeImpl t, InputStream src, long len) {
         super (t, src);
         this.remaining = len;
     }
 
     protected int readImpl (byte[]b, int off, int len) throws IOException {
 
-        eof = (remaining == 0);
+        eof = (remaining == 0L);
         if (eof) {
             return -1;
         }
         if (len > remaining) {
-            len = remaining;
+            len = (int)remaining;
         }
         int n = in.read(b, off, len);
         if (n > -1) {
@@ -65,7 +65,7 @@
             return 0;
         }
         int n = in.available();
-        return n < remaining? n: remaining;
+        return n < remaining? n: (int)remaining;
     }
 
     public boolean markSupported () {return false;}
--- a/src/share/classes/sun/net/httpserver/Request.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/net/httpserver/Request.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
@@ -53,7 +53,7 @@
         do {
             startLine = readLine();
             /* skip blank lines */
-        } while (startLine.equals (""));
+        } while (startLine == null ? false : startLine.equals (""));
     }
 
 
--- a/src/share/classes/sun/net/httpserver/ServerImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/net/httpserver/ServerImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -470,13 +470,13 @@
                 String version = requestLine.substring (start);
                 Headers headers = req.headers();
                 String s = headers.getFirst ("Transfer-encoding");
-                int clen = 0;
+                long clen = 0L;
                 if (s !=null && s.equalsIgnoreCase ("chunked")) {
-                    clen = -1;
+                    clen = -1L;
                 } else {
                     s = headers.getFirst ("Content-Length");
                     if (s != null) {
-                        clen = Integer.parseInt (s);
+                        clen = Long.parseLong(s);
                     }
                 }
                 ctx = contexts.findContext (protocol, uri.getPath());
--- a/src/share/classes/sun/net/www/http/ChunkedOutputStream.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/net/www/http/ChunkedOutputStream.java	Thu Jan 29 18:33:52 2009 -0800
@@ -29,32 +29,58 @@
 /**
  * OutputStream that sends the output to the underlying stream using chunked
  * encoding as specified in RFC 2068.
- *
- * @author  Alan Bateman
  */
 public class ChunkedOutputStream extends PrintStream {
 
     /* Default chunk size (including chunk header) if not specified */
     static final int DEFAULT_CHUNK_SIZE = 4096;
+    private static final byte[] CRLF = {'\r', '\n'};
+    private static final int CRLF_SIZE = CRLF.length;
+    private static final byte[] FOOTER = CRLF;
+    private static final int FOOTER_SIZE = CRLF_SIZE;
+    private static final byte[] EMPTY_CHUNK_HEADER = getHeader(0);
+    private static final int EMPTY_CHUNK_HEADER_SIZE = getHeaderSize(0);
 
     /* internal buffer */
     private byte buf[];
+    /* size of data (excluding footers and headers) already stored in buf */
+    private int size;
+    /* current index in buf (i.e. buf[count] */
     private int count;
+    /* number of bytes to be filled up to complete a data chunk
+     * currently being built */
+    private int spaceInCurrentChunk;
 
     /* underlying stream */
     private PrintStream out;
 
     /* the chunk size we use */
-    private int preferredChunkSize;
-
-    /* if the users write buffer is bigger than this size, we
-     * write direct from the users buffer instead of copying
-     */
-    static final int MAX_BUF_SIZE = 10 * 1024;
+    private int preferredChunkDataSize;
+    private int preferedHeaderSize;
+    private int preferredChunkGrossSize;
+    /* header for a complete Chunk */
+    private byte[] completeHeader;
 
     /* return the size of the header for a particular chunk size */
-    private int headerSize(int size) {
-        return 2 + (Integer.toHexString(size)).length();
+    private static int getHeaderSize(int size) {
+        return (Integer.toHexString(size)).length() + CRLF_SIZE;
+    }
+
+    /* return a header for a particular chunk size */
+    private static byte[] getHeader(int size){
+        try {
+            String hexStr =  Integer.toHexString(size);
+            byte[] hexBytes = hexStr.getBytes("US-ASCII");
+            byte[] header = new byte[getHeaderSize(size)];
+            for (int i=0; i<hexBytes.length; i++)
+                header[i] = hexBytes[i];
+            header[hexBytes.length] = CRLF[0];
+            header[hexBytes.length+1] = CRLF[1];
+            return header;
+        } catch (java.io.UnsupportedEncodingException e) {
+            /* This should never happen */
+            throw new InternalError(e.getMessage());
+        }
     }
 
     public ChunkedOutputStream(PrintStream o) {
@@ -63,111 +89,114 @@
 
     public ChunkedOutputStream(PrintStream o, int size) {
         super(o);
-
         out = o;
 
         if (size <= 0) {
             size = DEFAULT_CHUNK_SIZE;
         }
+
         /* Adjust the size to cater for the chunk header - eg: if the
          * preferred chunk size is 1k this means the chunk size should
-         * be 1019 bytes (differs by 5 from preferred size because of
-         * 3 bytes for chunk size in hex and CRLF).
+         * be 1017 bytes (differs by 7 from preferred size because of
+         * 3 bytes for chunk size in hex and CRLF (header) and CRLF (footer)).
+         *
+         * If headerSize(adjusted_size) is shorter then headerSize(size)
+         * then try to use the extra byte unless headerSize(adjusted_size+1)
+         * increases back to headerSize(size)
          */
         if (size > 0) {
-            int adjusted_size = size - headerSize(size);
-            if (adjusted_size + headerSize(adjusted_size) < size) {
+            int adjusted_size = size - getHeaderSize(size) - FOOTER_SIZE;
+            if (getHeaderSize(adjusted_size+1) < getHeaderSize(size)){
                 adjusted_size++;
             }
             size = adjusted_size;
         }
 
         if (size > 0) {
-            preferredChunkSize = size;
+            preferredChunkDataSize = size;
         } else {
-            preferredChunkSize = DEFAULT_CHUNK_SIZE - headerSize(DEFAULT_CHUNK_SIZE);
+            preferredChunkDataSize = DEFAULT_CHUNK_SIZE -
+                    getHeaderSize(DEFAULT_CHUNK_SIZE) - FOOTER_SIZE;
         }
 
+        preferedHeaderSize = getHeaderSize(preferredChunkDataSize);
+        preferredChunkGrossSize = preferedHeaderSize + preferredChunkDataSize
+                + FOOTER_SIZE;
+        completeHeader = getHeader(preferredChunkDataSize);
+
         /* start with an initial buffer */
-        buf = new byte[preferredChunkSize + 32];
+        buf = new byte[preferredChunkDataSize + 32];
+        reset();
     }
 
     /*
-     * If flushAll is true, then all data is flushed in one chunk.
-     *
-     * If false and the size of the buffer data exceeds the preferred
-     * chunk size then chunks are flushed to the output stream.
-     * If there isn't enough data to make up a complete chunk,
-     * then the method returns.
+     * Flush a buffered, completed chunk to an underlying stream. If the data in
+     * the buffer is insufficient to build up a chunk of "preferredChunkSize"
+     * then the data do not get flushed unless flushAll is true. If flushAll is
+     * true then the remaining data builds up a last chunk which size is smaller
+     * than preferredChunkSize, and then the last chunk gets flushed to
+     * underlying stream. If flushAll is true and there is no data in a buffer
+     * at all then an empty chunk (containing a header only) gets flushed to
+     * underlying stream.
      */
-    private void flush(byte[] buf, boolean flushAll) {
-        flush (buf, flushAll, 0);
-    }
-
-    private void flush(byte[] buf, boolean flushAll, int offset) {
-        int chunkSize;
+     private void flush(boolean flushAll) {
+        if (spaceInCurrentChunk == 0) {
+            /* flush a completed chunk to underlying stream */
+            out.write(buf, 0, preferredChunkGrossSize);
+            out.flush();
+            reset();
+        } else if (flushAll){
+            /* complete the last chunk and flush it to underlying stream */
+            if (size > 0){
+                /* adjust a header start index in case the header of the last
+                 * chunk is shorter then preferedHeaderSize */
 
-        do {
-            if (count < preferredChunkSize) {
-                if (!flushAll) {
-                    break;
-                }
-                chunkSize = count;
+                int adjustedHeaderStartIndex = preferedHeaderSize -
+                        getHeaderSize(size);
+
+                /* write header */
+                System.arraycopy(getHeader(size), 0, buf,
+                        adjustedHeaderStartIndex, getHeaderSize(size));
+
+                /* write footer */
+                buf[count++] = FOOTER[0];
+                buf[count++] = FOOTER[1];
+
+                //send the last chunk to underlying stream
+                out.write(buf, adjustedHeaderStartIndex, count - adjustedHeaderStartIndex);
             } else {
-                chunkSize = preferredChunkSize;
-            }
-
-            byte[] bytes = null;
-            try {
-                bytes = (Integer.toHexString(chunkSize)).getBytes("US-ASCII");
-            } catch (java.io.UnsupportedEncodingException e) {
-                //This should never happen.
-                throw new InternalError(e.getMessage());
+                //send an empty chunk (containing just a header) to underlying stream
+                out.write(EMPTY_CHUNK_HEADER, 0, EMPTY_CHUNK_HEADER_SIZE);
             }
 
-            out.write(bytes, 0, bytes.length);
-            out.write((byte)'\r');
-            out.write((byte)'\n');
-            if (chunkSize > 0) {
-                out.write(buf, offset, chunkSize);
-                out.write((byte)'\r');
-                out.write((byte)'\n');
-            }
             out.flush();
-            if (checkError()) {
-                break;
-            }
-            if (chunkSize > 0) {
-                count -= chunkSize;
-                offset += chunkSize;
-            }
-        } while (count > 0);
-
-        if (!checkError() && count > 0) {
-            System.arraycopy(buf, offset, this.buf, 0, count);
-        }
+            reset();
+         }
     }
 
+    @Override
     public boolean checkError() {
         return out.checkError();
     }
 
-    /*
-     * Check if we have enough data for a chunk and if so flush to the
-     * underlying output stream.
-     */
-    private void checkFlush() {
-        if (count >= preferredChunkSize) {
-            flush(buf, false);
-        }
-    }
-
     /* Check that the output stream is still open */
     private void ensureOpen() {
         if (out == null)
             setError();
     }
 
+   /*
+    * Writes data from b[] to an internal buffer and stores the data as data
+    * chunks of a following format: {Data length in Hex}{CRLF}{data}{CRLF}
+    * The size of the data is preferredChunkSize. As soon as a completed chunk
+    * is read from b[] a process of reading from b[] suspends, the chunk gets
+    * flushed to the underlying stream and then the reading process from b[]
+    * continues. When there is no more sufficient data in b[] to build up a
+    * chunk of preferredChunkSize size the data get stored as an incomplete
+    * chunk of a following format: {space for data length}{CRLF}{data}
+    * The size of the data is of course smaller than preferredChunkSize.
+    */
+    @Override
     public synchronized void write(byte b[], int off, int len) {
         ensureOpen();
         if ((off < 0) || (off > b.length) || (len < 0) ||
@@ -177,81 +206,95 @@
             return;
         }
 
-        int l = preferredChunkSize - count;
+        /* if b[] contains enough data then one loop cycle creates one complete
+         * data chunk with a header, body and a footer, and then flushes the
+         * chunk to the underlying stream. Otherwise, the last loop cycle
+         * creates incomplete data chunk with empty header and with no footer
+         * and stores this incomplete chunk in an internal buffer buf[]
+         */
+        int bytesToWrite = len;
+        int inputIndex = off;  /* the index of the byte[] currently being written */
+
+        do {
+            /* enough data to complete a chunk */
+            if (bytesToWrite >= spaceInCurrentChunk) {
 
-        if ((len > MAX_BUF_SIZE) && (len > l)) {
-            /* current chunk is empty just write the data */
-            if (count == 0) {
-                count = len;
-                flush (b, false, off);
-                return;
-            }
+                /* header */
+                for (int i=0; i<completeHeader.length; i++)
+                    buf[i] = completeHeader[i];
+
+                /* data */
+                System.arraycopy(b, inputIndex, buf, count, spaceInCurrentChunk);
+                inputIndex += spaceInCurrentChunk;
+                bytesToWrite -= spaceInCurrentChunk;
+                count += spaceInCurrentChunk;
 
-            /* first finish the current chunk */
-            if (l > 0) {
-                System.arraycopy(b, off, buf, count, l);
-                count = preferredChunkSize;
-                flush(buf, false);
+                /* footer */
+                buf[count++] = FOOTER[0];
+                buf[count++] = FOOTER[1];
+                spaceInCurrentChunk = 0; //chunk is complete
+
+                flush(false);
+                if (checkError()){
+                    break;
+                }
             }
 
-            count = len - l;
-            /* Now write the rest of the data */
-            flush (b, false, l+off);
-        } else {
-            int newcount = count + len;
+            /* not enough data to build a chunk */
+            else {
+                /* header */
+                /* do not write header if not enough bytes to build a chunk yet */
 
-            if (newcount > buf.length) {
-                byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)];
-                System.arraycopy(buf, 0, newbuf, 0, count);
-                buf = newbuf;
+                /* data */
+                System.arraycopy(b, inputIndex, buf, count, bytesToWrite);
+                count += bytesToWrite;
+                size += bytesToWrite;
+                spaceInCurrentChunk -= bytesToWrite;
+                bytesToWrite = 0;
+
+                /* footer */
+                /* do not write header if not enough bytes to build a chunk yet */
             }
-            System.arraycopy(b, off, buf, count, len);
-            count = newcount;
-            checkFlush();
-        }
+        } while (bytesToWrite > 0);
     }
 
-    public synchronized void write(int b) {
-        ensureOpen();
-        int newcount = count + 1;
-        if (newcount > buf.length) {
-            byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)];
-            System.arraycopy(buf, 0, newbuf, 0, count);
-            buf = newbuf;
-        }
-        buf[count] = (byte)b;
-        count = newcount;
-        checkFlush();
+    @Override
+    public synchronized void write(int _b) {
+        byte b[] = {(byte)_b};
+        write(b, 0, 1);
     }
 
     public synchronized void reset() {
-        count = 0;
+        count = preferedHeaderSize;
+        size = 0;
+        spaceInCurrentChunk = preferredChunkDataSize;
     }
 
     public int size() {
-        return count;
+        return size;
     }
 
+    @Override
     public synchronized void close() {
         ensureOpen();
 
         /* if we have buffer a chunked send it */
-        if (count > 0) {
-            flush(buf, true);
+        if (size > 0) {
+            flush(true);
         }
 
         /* send a zero length chunk */
-        flush(buf, true);
+        flush(true);
 
         /* don't close the underlying stream */
         out = null;
     }
 
+    @Override
     public synchronized void flush() {
         ensureOpen();
-        if (count > 0) {
-            flush(buf, true);
+        if (size > 0) {
+            flush(true);
         }
     }
-
 }
--- a/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Thu Jan 29 18:33:52 2009 -0800
@@ -435,8 +435,14 @@
             if (streaming()) {
                 if (chunkLength != -1) {
                     requests.set ("Transfer-Encoding", "chunked");
-                } else {
-                    requests.set ("Content-Length", String.valueOf(fixedContentLength));
+                } else { /* fixed content length */
+                    if (fixedContentLengthLong != -1) {
+                        requests.set ("Content-Length",
+                                      String.valueOf(fixedContentLengthLong));
+                    } else if (fixedContentLength != -1) {
+                        requests.set ("Content-Length",
+                                      String.valueOf(fixedContentLength));
+                    }
                 }
             } else if (poster != null) {
                 /* add Content-Length & POST/PUT data */
@@ -871,11 +877,17 @@
             ps = (PrintStream)http.getOutputStream();
             if (streaming()) {
                 if (strOutputStream == null) {
-                    if (fixedContentLength != -1) {
-                        strOutputStream = new StreamingOutputStream (ps, fixedContentLength);
-                    } else if (chunkLength != -1) {
-                        strOutputStream =
-                            new StreamingOutputStream (new ChunkedOutputStream (ps, chunkLength), -1);
+                    if (chunkLength != -1) { /* chunked */
+                         strOutputStream = new StreamingOutputStream(
+                               new ChunkedOutputStream(ps, chunkLength), -1L);
+                    } else { /* must be fixed content length */
+                        long length = 0L;
+                        if (fixedContentLengthLong != -1) {
+                            length = fixedContentLengthLong;
+                        } else if (fixedContentLength != -1) {
+                            length = fixedContentLength;
+                        }
+                        strOutputStream = new StreamingOutputStream(ps, length);
                     }
                 }
                 return strOutputStream;
@@ -895,7 +907,8 @@
     }
 
     private boolean streaming () {
-        return (fixedContentLength != -1) || (chunkLength != -1);
+        return (fixedContentLength != -1) || (fixedContentLengthLong != -1) ||
+               (chunkLength != -1);
     }
 
     /*
@@ -2619,8 +2632,8 @@
 
     class StreamingOutputStream extends FilterOutputStream {
 
-        int expected;
-        int written;
+        long expected;
+        long written;
         boolean closed;
         boolean error;
         IOException errorExcp;
@@ -2631,10 +2644,10 @@
          *    In the 2nd case, we make sure the expected number of
          *    of bytes are actually written
          */
-        StreamingOutputStream (OutputStream os, int expectedLength) {
+        StreamingOutputStream (OutputStream os, long expectedLength) {
             super (os);
             expected = expectedLength;
-            written = 0;
+            written = 0L;
             closed = false;
             error = false;
         }
@@ -2643,7 +2656,7 @@
         public void write (int b) throws IOException {
             checkError();
             written ++;
-            if (expected != -1 && written > expected) {
+            if (expected != -1L && written > expected) {
                 throw new IOException ("too many bytes written");
             }
             out.write (b);
@@ -2658,7 +2671,7 @@
         public void write (byte[] b, int off, int len) throws IOException {
             checkError();
             written += len;
-            if (expected != -1 && written > expected) {
+            if (expected != -1L && written > expected) {
                 out.close ();
                 throw new IOException ("too many bytes written");
             }
@@ -2691,7 +2704,7 @@
                 return;
             }
             closed = true;
-            if (expected != -1) {
+            if (expected != -1L) {
                 /* not chunked */
                 if (written != expected) {
                     error = true;
--- a/src/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc.  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
@@ -527,6 +527,10 @@
         delegate.setFixedLengthStreamingMode(contentLength);
     }
 
+    public void setFixedLengthStreamingMode(long contentLength) {
+        delegate.setFixedLengthStreamingMode(contentLength);
+    }
+
     public void setChunkedStreamingMode (int chunklen) {
         delegate.setChunkedStreamingMode(chunklen);
     }
--- a/src/share/classes/sun/nio/ch/AbstractPollSelectorImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/nio/ch/AbstractPollSelectorImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc.  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
@@ -58,6 +58,9 @@
     // True if this Selector has been closed
     private boolean closed = false;
 
+    // Lock for close and cleanup
+    private Object closeLock = new Object();
+
     AbstractPollSelectorImpl(SelectorProvider sp, int channels, int offset) {
         super(sp);
         this.totalChannels = channels;
@@ -65,7 +68,11 @@
     }
 
     void putEventOps(SelectionKeyImpl sk, int ops) {
-        pollWrapper.putEventOps(sk.getIndex(), ops);
+        synchronized (closeLock) {
+            if (closed)
+                throw new ClosedSelectorException();
+            pollWrapper.putEventOps(sk.getIndex(), ops);
+        }
     }
 
     public Selector wakeup() {
@@ -76,7 +83,9 @@
     protected abstract int doSelect(long timeout) throws IOException;
 
     protected void implClose() throws IOException {
-        if (!closed) {
+        synchronized (closeLock) {
+            if (closed)
+                return;
             closed = true;
             // Deregister channels
             for(int i=channelOffset; i<totalChannels; i++) {
@@ -129,23 +138,28 @@
     }
 
     protected void implRegister(SelectionKeyImpl ski) {
-        // Check to see if the array is large enough
-        if (channelArray.length == totalChannels) {
-            // Make a larger array
-            int newSize = pollWrapper.totalChannels * 2;
-            SelectionKeyImpl temp[] = new SelectionKeyImpl[newSize];
-            // Copy over
-            for (int i=channelOffset; i<totalChannels; i++)
-                temp[i] = channelArray[i];
-            channelArray = temp;
-            // Grow the NativeObject poll array
-            pollWrapper.grow(newSize);
+        synchronized (closeLock) {
+            if (closed)
+                throw new ClosedSelectorException();
+
+            // Check to see if the array is large enough
+            if (channelArray.length == totalChannels) {
+                // Make a larger array
+                int newSize = pollWrapper.totalChannels * 2;
+                SelectionKeyImpl temp[] = new SelectionKeyImpl[newSize];
+                // Copy over
+                for (int i=channelOffset; i<totalChannels; i++)
+                    temp[i] = channelArray[i];
+                channelArray = temp;
+                // Grow the NativeObject poll array
+                pollWrapper.grow(newSize);
+            }
+            channelArray[totalChannels] = ski;
+            ski.setIndex(totalChannels);
+            pollWrapper.addEntry(ski.channel);
+            totalChannels++;
+            keys.add(ski);
         }
-        channelArray[totalChannels] = ski;
-        ski.setIndex(totalChannels);
-        pollWrapper.addEntry(ski.channel);
-        totalChannels++;
-        keys.add(ski);
     }
 
     protected void implDereg(SelectionKeyImpl ski) throws IOException {
--- a/src/share/classes/sun/nio/cs/IBM437.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,368 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM437
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM437() {
-        super("IBM437", StandardCharsets.aliases_IBM437);
-    }
-
-    public String historicalName() {
-        return "Cp437";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM437);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7" +     // 0x80 - 0x87
-            "\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5" +     // 0x88 - 0x8F
-            "\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9" +     // 0x90 - 0x97
-            "\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192" +     // 0x98 - 0x9F
-            "\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA" +     // 0xA0 - 0xA7
-            "\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB" +     // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" +     // 0xB0 - 0xB7
-            "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" +     // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" +     // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" +     // 0xC8 - 0xCF
-            "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" +     // 0xD0 - 0xD7
-            "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +     // 0xD8 - 0xDF
-            "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" +     // 0xE0 - 0xE7
-            "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" +     // 0xE8 - 0xEF
-            "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" +     // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u00AD\u009B\u009C\u0000\u009D\u0000\u0000" +
-            "\u0000\u0000\u00A6\u00AE\u00AA\u0000\u0000\u0000" +
-            "\u00F8\u00F1\u00FD\u0000\u0000\u00E6\u0000\u00FA" +
-            "\u0000\u0000\u00A7\u00AF\u00AC\u00AB\u0000\u00A8" +
-            "\u0000\u0000\u0000\u0000\u008E\u008F\u0092\u0080" +
-            "\u0000\u0090\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00A5\u0000\u0000\u0000\u0000\u0099\u0000" +
-            "\u0000\u0000\u0000\u0000\u009A\u0000\u0000\u00E1" +
-            "\u0085\u00A0\u0083\u0000\u0084\u0086\u0091\u0087" +
-            "\u008A\u0082\u0088\u0089\u008D\u00A1\u008C\u008B" +
-            "\u0000\u00A4\u0095\u00A2\u0093\u0000\u0094\u00F6" +
-            "\u0000\u0097\u00A3\u0096\u0081\u0000\u0000\u0098" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u009F\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E2\u0000\u0000\u0000\u0000" +
-            "\u00E9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E4\u0000\u0000\u00E8\u0000" +
-            "\u0000\u00EA\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00E0\u0000\u0000\u00EB\u00EE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E3\u0000\u0000\u00E5\u00E7\u0000\u00ED\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00FC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u009E\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F9" +
-            "\u00FB\u0000\u0000\u0000\u00EC\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00EF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F7\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F0" +
-            "\u0000\u0000\u00F3\u00F2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F4\u00F5" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00C4\u0000" +
-            "\u00B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000" +
-            "\u0000\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000" +
-            "\u0000\u0000\u00C3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00B4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C2\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C1\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C5\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA" +
-            "\u00D5\u00D6\u00C9\u00B8\u00B7\u00BB\u00D4\u00D3" +
-            "\u00C8\u00BE\u00BD\u00BC\u00C6\u00C7\u00CC\u00B5" +
-            "\u00B6\u00B9\u00D1\u00D2\u00CB\u00CF\u00D0\u00CA" +
-            "\u00D8\u00D7\u00CE\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DF\u0000" +
-            "\u0000\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000" +
-            "\u0000\u0000\u00DD\u0000\u0000\u0000\u00DE\u00B0" +
-            "\u00B1\u00B2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00FE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 403, 512, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            711, 403, 942, 1182, 403, 1438, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM737.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,321 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM737
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM737() {
-        super("x-IBM737", StandardCharsets.aliases_IBM737);
-    }
-
-    public String historicalName() {
-        return "Cp737";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM737);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398" +        // 0x80 - 0x87
-            "\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0" +        // 0x88 - 0x8F
-            "\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9" +        // 0x90 - 0x97
-            "\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8" +        // 0x98 - 0x9F
-            "\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0" +        // 0xA0 - 0xA7
-            "\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" +        // 0xB0 - 0xB7
-            "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" +        // 0xC8 - 0xCF
-            "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" +        // 0xD0 - 0xD7
-            "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +        // 0xD8 - 0xDF
-            "\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD" +        // 0xE0 - 0xE7
-            "\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E" +        // 0xE8 - 0xEF
-            "\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248" +        // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00F8\u00F1\u00FD\u0000\u0000\u0000\u0000\u00FA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F6" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00EA\u0000\u00EB\u00EC\u00ED\u0000\u00EE\u0000" +
-            "\u00EF\u00F0\u0000\u0080\u0081\u0082\u0083\u0084" +
-            "\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C" +
-            "\u008D\u008E\u008F\u0090\u0000\u0091\u0092\u0093" +
-            "\u0094\u0095\u0096\u0097\u00F4\u00F5\u00E1\u00E2" +
-            "\u00E3\u00E5\u0000\u0098\u0099\u009A\u009B\u009C" +
-            "\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4" +
-            "\u00A5\u00A6\u00A7\u00A8\u00AA\u00A9\u00AB\u00AC" +
-            "\u00AD\u00AE\u00AF\u00E0\u00E4\u00E8\u00E6\u00E7" +
-            "\u00E9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F9\u00FB\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F3\u00F2\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C4\u0000\u00B3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" +
-            "\u00BF\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u00C3\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C2\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C1\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CD\u00BA\u00D5\u00D6\u00C9\u00B8\u00B7\u00BB" +
-            "\u00D4\u00D3\u00C8\u00BE\u00BD\u00BC\u00C6\u00C7" +
-            "\u00CC\u00B5\u00B6\u00B9\u00D1\u00D2\u00CB\u00CF" +
-            "\u00D0\u00CA\u00D8\u00D7\u00CE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DF\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" +
-            "\u00DB\u0000\u0000\u0000\u00DD\u0000\u0000\u0000" +
-            "\u00DE\u00B0\u00B1\u00B2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 248, 248, 370, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            577, 248, 808, 248, 248, 1064, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM775.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM775
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM775() {
-        super("IBM775", StandardCharsets.aliases_IBM775);
-    }
-
-    public String historicalName() {
-        return "Cp775";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM775);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107" +        // 0x80 - 0x87
-            "\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5" +        // 0x88 - 0x8F
-            "\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A" +        // 0x90 - 0x97
-            "\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4" +        // 0x98 - 0x9F
-            "\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6" +        // 0xA0 - 0xA7
-            "\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118" +        // 0xB0 - 0xB7
-            "\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D" +        // 0xC8 - 0xCF
-            "\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B" +        // 0xD0 - 0xD7
-            "\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +        // 0xD8 - 0xDF
-            "\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144" +        // 0xE0 - 0xE7
-            "\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019" +        // 0xE8 - 0xEF
-            "\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E" +        // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0096\u009C\u009F\u0000\u00A7\u00F5" +
-            "\u0000\u00A8\u0000\u00AE\u00AA\u00F0\u00A9\u0000" +
-            "\u00F8\u00F1\u00FD\u00FC\u0000\u00E6\u00F4\u00FA" +
-            "\u0000\u00FB\u0000\u00AF\u00AC\u00AB\u00F3\u0000" +
-            "\u0000\u0000\u0000\u0000\u008E\u008F\u0092\u0000" +
-            "\u0000\u0090\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E0\u0000\u00E5\u0099\u009E" +
-            "\u009D\u0000\u0000\u0000\u009A\u0000\u0000\u00E1" +
-            "\u0000\u0000\u0000\u0000\u0084\u0086\u0091\u0000" +
-            "\u0000\u0082\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00A2\u0000\u00E4\u0094\u00F6" +
-            "\u009B\u0000\u0000\u0000\u0081\u0000\u0000\u0000" +
-            "\u00A0\u0083\u0000\u0000\u00B5\u00D0\u0080\u0087" +
-            "\u0000\u0000\u0000\u0000\u00B6\u00D1\u0000\u0000" +
-            "\u0000\u0000\u00ED\u0089\u0000\u0000\u00B8\u00D3" +
-            "\u00B7\u00D2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0095\u0085\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A1\u008C\u0000\u0000\u00BD\u00D4" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00E8\u00E9" +
-            "\u0000\u0000\u0000\u00EA\u00EB\u0000\u0000\u0000" +
-            "\u0000\u00AD\u0088\u00E3\u00E7\u00EE\u00EC\u0000" +
-            "\u0000\u0000\u0000\u0000\u00E2\u0093\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u008A\u008B" +
-            "\u0000\u0000\u0097\u0098\u0000\u0000\u0000\u0000" +
-            "\u00BE\u00D5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C7\u00D7\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C6\u00D6\u0000\u0000\u0000\u0000" +
-            "\u0000\u008D\u00A5\u00A3\u00A4\u00CF\u00D8\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00EF" +
-            "\u0000\u0000\u00F2\u00A6\u00F7\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000" +
-            "\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000" +
-            "\u0000\u00C3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B4\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C1\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA\u0000" +
-            "\u0000\u00C9\u0000\u0000\u00BB\u0000\u0000\u00C8" +
-            "\u0000\u0000\u00BC\u0000\u0000\u00CC\u0000\u0000" +
-            "\u00B9\u0000\u0000\u00CB\u0000\u0000\u00CA\u0000" +
-            "\u0000\u00CE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00DF\u0000\u0000" +
-            "\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000" +
-            "\u0000\u00DD\u0000\u0000\u0000\u00DE\u00B0\u00B1" +
-            "\u00B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            614, 383, 845, 383, 383, 1101, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM850.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,299 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM850
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM850() {
-        super("IBM850", StandardCharsets.aliases_IBM850);
-    }
-
-    public String historicalName() {
-        return "Cp850";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM850);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public static String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7" +        // 0x80 - 0x87
-            "\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5" +        // 0x88 - 0x8F
-            "\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9" +        // 0x90 - 0x97
-            "\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192" +        // 0x98 - 0x9F
-            "\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA" +        // 0xA0 - 0xA7
-            "\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0" +        // 0xB0 - 0xB7
-            "\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4" +        // 0xC8 - 0xCF
-            "\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE" +        // 0xD0 - 0xD7
-            "\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580" +        // 0xD8 - 0xDF
-            "\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE" +        // 0xE0 - 0xE7
-            "\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4" +        // 0xE8 - 0xEF
-            "\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8" +        // 0xF0 - 0xF7
-            "\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    protected static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u00AD\u00BD\u009C\u00CF\u00BE\u00DD\u00F5" +
-            "\u00F9\u00B8\u00A6\u00AE\u00AA\u00F0\u00A9\u00EE" +
-            "\u00F8\u00F1\u00FD\u00FC\u00EF\u00E6\u00F4\u00FA" +
-            "\u00F7\u00FB\u00A7\u00AF\u00AC\u00AB\u00F3\u00A8" +
-            "\u00B7\u00B5\u00B6\u00C7\u008E\u008F\u0092\u0080" +
-            "\u00D4\u0090\u00D2\u00D3\u00DE\u00D6\u00D7\u00D8" +
-            "\u00D1\u00A5\u00E3\u00E0\u00E2\u00E5\u0099\u009E" +
-            "\u009D\u00EB\u00E9\u00EA\u009A\u00ED\u00E8\u00E1" +
-            "\u0085\u00A0\u0083\u00C6\u0084\u0086\u0091\u0087" +
-            "\u008A\u0082\u0088\u0089\u008D\u00A1\u008C\u008B" +
-            "\u00D0\u00A4\u0095\u00A2\u0093\u00E4\u0094\u00F6" +
-            "\u009B\u0097\u00A3\u0096\u0081\u00EC\u00E7\u0098" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00D5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u009F\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000\u0000" +
-            "\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000\u0000" +
-            "\u00C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00CD\u00BA\u0000\u0000" +
-            "\u00C9\u0000\u0000\u00BB\u0000\u0000\u00C8\u0000" +
-            "\u0000\u00BC\u0000\u0000\u00CC\u0000\u0000\u00B9" +
-            "\u0000\u0000\u00CB\u0000\u0000\u00CA\u0000\u0000" +
-            "\u00CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DF\u0000\u0000\u0000" +
-            "\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00B0\u00B1\u00B2" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00FE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            636, 403, 403, 403, 403, 892, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM852.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM852
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM852() {
-        super("IBM852", StandardCharsets.aliases_IBM852);
-    }
-
-    public String historicalName() {
-        return "Cp852";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM852);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7" +     // 0x80 - 0x87
-            "\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106" +     // 0x88 - 0x8F
-            "\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A" +     // 0x90 - 0x97
-            "\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D" +     // 0x98 - 0x9F
-            "\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E" +     // 0xA0 - 0xA7
-            "\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB" +     // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A" +     // 0xB0 - 0xB7
-            "\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510" +     // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103" +     // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4" +     // 0xC8 - 0xCF
-            "\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE" +     // 0xD0 - 0xD7
-            "\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580" +     // 0xD8 - 0xDF
-            "\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161" +     // 0xE0 - 0xE7
-            "\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4" +     // 0xE8 - 0xEF
-            "\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8" +     // 0xF0 - 0xF7
-            "\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0000\u0000\u00CF\u0000\u0000\u00F5" +
-            "\u00F9\u0000\u0000\u00AE\u00AA\u00F0\u0000\u0000" +
-            "\u00F8\u0000\u0000\u0000\u00EF\u0000\u0000\u0000" +
-            "\u00F7\u0000\u0000\u00AF\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B5\u00B6\u0000\u008E\u0000\u0000\u0080" +
-            "\u0000\u0090\u0000\u00D3\u0000\u00D6\u00D7\u0000" +
-            "\u0000\u0000\u0000\u00E0\u00E2\u0000\u0099\u009E" +
-            "\u0000\u0000\u00E9\u0000\u009A\u00ED\u0000\u00E1" +
-            "\u0000\u00A0\u0083\u0000\u0084\u0000\u0000\u0087" +
-            "\u0000\u0082\u0000\u0089\u0000\u00A1\u008C\u0000" +
-            "\u0000\u0000\u0000\u00A2\u0093\u0000\u0094\u00F6" +
-            "\u0000\u0000\u00A3\u0000\u0081\u00EC\u0000\u0000" +
-            "\u00C6\u00C7\u00A4\u00A5\u008F\u0086\u0000\u0000" +
-            "\u0000\u0000\u00AC\u009F\u00D2\u00D4\u00D1\u00D0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A8\u00A9" +
-            "\u00B7\u00D8\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0091" +
-            "\u0092\u0000\u0000\u0095\u0096\u0000\u0000\u009D" +
-            "\u0088\u00E3\u00E4\u0000\u0000\u00D5\u00E5\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u008A\u008B" +
-            "\u0000\u0000\u00E8\u00EA\u0000\u0000\u00FC\u00FD" +
-            "\u0097\u0098\u0000\u0000\u00B8\u00AD\u00E6\u00E7" +
-            "\u00DD\u00EE\u009B\u009C\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DE\u0085\u00EB\u00FB" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008D" +
-            "\u00AB\u00BD\u00BE\u00A6\u00A7\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F3\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F4\u00FA" +
-            "\u0000\u00F2\u0000\u00F1\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00C4\u0000" +
-            "\u00B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000" +
-            "\u0000\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000" +
-            "\u0000\u0000\u00C3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00B4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C2\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C1\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C5\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA" +
-            "\u0000\u0000\u00C9\u0000\u0000\u00BB\u0000\u0000" +
-            "\u00C8\u0000\u0000\u00BC\u0000\u0000\u00CC\u0000" +
-            "\u0000\u00B9\u0000\u0000\u00CB\u0000\u0000\u00CA" +
-            "\u0000\u0000\u00CE\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DF\u0000" +
-            "\u0000\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B0" +
-            "\u00B1\u00B2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00FE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 254, 438, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 694, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM855.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM855
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM855() {
-        super("IBM855", StandardCharsets.aliases_IBM855);
-    }
-
-    public String historicalName() {
-        return "Cp855";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM855);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404" +        // 0x80 - 0x87
-            "\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408" +        // 0x88 - 0x8F
-            "\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C" +        // 0x90 - 0x97
-            "\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A" +        // 0x98 - 0x9F
-            "\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414" +        // 0xA0 - 0xA7
-            "\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438" +        // 0xB0 - 0xB7
-            "\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4" +        // 0xC8 - 0xCF
-            "\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E" +        // 0xD0 - 0xD7
-            "\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580" +        // 0xD8 - 0xDF
-            "\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443" +        // 0xE0 - 0xE7
-            "\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116" +        // 0xE8 - 0xEF
-            "\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D" +        // 0xF0 - 0xF7
-            "\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0000\u0000\u00CF\u0000\u0000\u00FD" +
-            "\u0000\u0000\u0000\u00AE\u0000\u00F0\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0085\u0081\u0083\u0087" +
-            "\u0089\u008B\u008D\u008F\u0091\u0093\u0095\u0097" +
-            "\u0000\u0099\u009B\u00A1\u00A3\u00EC\u00AD\u00A7" +
-            "\u00A9\u00EA\u00F4\u00B8\u00BE\u00C7\u00D1\u00D3" +
-            "\u00D5\u00D7\u00DD\u00E2\u00E4\u00E6\u00E8\u00AB" +
-            "\u00B6\u00A5\u00FC\u00F6\u00FA\u009F\u00F2\u00EE" +
-            "\u00F8\u009D\u00E0\u00A0\u00A2\u00EB\u00AC\u00A6" +
-            "\u00A8\u00E9\u00F3\u00B7\u00BD\u00C6\u00D0\u00D2" +
-            "\u00D4\u00D6\u00D8\u00E1\u00E3\u00E5\u00E7\u00AA" +
-            "\u00B5\u00A4\u00FB\u00F5\u00F9\u009E\u00F1\u00ED" +
-            "\u00F7\u009C\u00DE\u0000\u0084\u0080\u0082\u0086" +
-            "\u0088\u008A\u008C\u008E\u0090\u0092\u0094\u0096" +
-            "\u0000\u0098\u009A\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00EF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000" +
-            "\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000" +
-            "\u0000\u00C3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B4\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C1\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA\u0000" +
-            "\u0000\u00C9\u0000\u0000\u00BB\u0000\u0000\u00C8" +
-            "\u0000\u0000\u00BC\u0000\u0000\u00CC\u0000\u0000" +
-            "\u00B9\u0000\u0000\u00CB\u0000\u0000\u00CA\u0000" +
-            "\u0000\u00CE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00DF\u0000\u0000" +
-            "\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00B0\u00B1" +
-            "\u00B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 188, 188, 188, 443, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 677, 188, 188, 188, 933, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM857.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM857
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM857() {
-        super("IBM857", StandardCharsets.aliases_IBM857);
-    }
-
-    public String historicalName() {
-        return "Cp857";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM857);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7" +        // 0x80 - 0x87
-            "\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5" +        // 0x88 - 0x8F
-            "\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9" +        // 0x90 - 0x97
-            "\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F" +        // 0x98 - 0x9F
-            "\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F" +        // 0xA0 - 0xA7
-            "\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0" +        // 0xB0 - 0xB7
-            "\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4" +        // 0xC8 - 0xCF
-            "\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE" +        // 0xD0 - 0xD7
-            "\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580" +        // 0xD8 - 0xDF
-            "\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD" +        // 0xE0 - 0xE7
-            "\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4" +        // 0xE8 - 0xEF
-            "\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8" +        // 0xF0 - 0xF7
-            "\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u00AD\u00BD\u009C\u00CF\u00BE\u00DD\u00F5" +
-            "\u00F9\u00B8\u00D1\u00AE\u00AA\u00F0\u00A9\u00EE" +
-            "\u00F8\u00F1\u00FD\u00FC\u00EF\u00E6\u00F4\u00FA" +
-            "\u00F7\u00FB\u00D0\u00AF\u00AC\u00AB\u00F3\u00A8" +
-            "\u00B7\u00B5\u00B6\u00C7\u008E\u008F\u0092\u0080" +
-            "\u00D4\u0090\u00D2\u00D3\u00DE\u00D6\u00D7\u00D8" +
-            "\u0000\u00A5\u00E3\u00E0\u00E2\u00E5\u0099\u00E8" +
-            "\u009D\u00EB\u00E9\u00EA\u009A\u0000\u0000\u00E1" +
-            "\u0085\u00A0\u0083\u00C6\u0084\u0086\u0091\u0087" +
-            "\u008A\u0082\u0088\u0089\u00EC\u00A1\u008C\u008B" +
-            "\u0000\u00A4\u0095\u00A2\u0093\u00E4\u0094\u00F6" +
-            "\u009B\u0097\u00A3\u0096\u0081\u0000\u0000\u00ED" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A6\u00A7" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0098\u008D\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u009E\u009F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C4\u0000\u00B3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" +
-            "\u00BF\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u00C3\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C2\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C1\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CD\u00BA\u0000\u0000\u00C9\u0000\u0000\u00BB" +
-            "\u0000\u0000\u00C8\u0000\u0000\u00BC\u0000\u0000" +
-            "\u00CC\u0000\u0000\u00B9\u0000\u0000\u00CB\u0000" +
-            "\u0000\u00CA\u0000\u0000\u00CE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DF\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" +
-            "\u00DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B0\u00B1\u00B2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 608, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM858.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM858
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM858() {
-        super("IBM00858", StandardCharsets.aliases_IBM858);
-    }
-
-    public String historicalName() {
-        return "Cp858";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM858);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public static String getDecoderSingleByteMappings() {
-        return IBM850.getDecoderSingleByteMappings();
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends IBM850.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0xD5) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u00AD\u00BD\u009C\u00CF\u00BE\u00DD\u00F5" +
-            "\u00F9\u00B8\u00A6\u00AE\u00AA\u00F0\u00A9\u00EE" +
-            "\u00F8\u00F1\u00FD\u00FC\u00EF\u00E6\u00F4\u00FA" +
-            "\u00F7\u00FB\u00A7\u00AF\u00AC\u00AB\u00F3\u00A8" +
-            "\u00B7\u00B5\u00B6\u00C7\u008E\u008F\u0092\u0080" +
-            "\u00D4\u0090\u00D2\u00D3\u00DE\u00D6\u00D7\u00D8" +
-            "\u00D1\u00A5\u00E3\u00E0\u00E2\u00E5\u0099\u009E" +
-            "\u009D\u00EB\u00E9\u00EA\u009A\u00ED\u00E8\u00E1" +
-            "\u0085\u00A0\u0083\u00C6\u0084\u0086\u0091\u0087" +
-            "\u008A\u0082\u0088\u0089\u008D\u00A1\u008C\u008B" +
-            "\u00D0\u00A4\u0095\u00A2\u0093\u00E4\u0094\u00F6" +
-            "\u009B\u0097\u00A3\u0096\u0081\u00EC\u00E7\u0098" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u009F\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000\u0000" +
-            "\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000\u0000" +
-            "\u00C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00CD\u00BA\u0000\u0000" +
-            "\u00C9\u0000\u0000\u00BB\u0000\u0000\u00C8\u0000" +
-            "\u0000\u00BC\u0000\u0000\u00CC\u0000\u0000\u00B9" +
-            "\u0000\u0000\u00CB\u0000\u0000\u00CA\u0000\u0000" +
-            "\u00CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DF\u0000\u0000\u0000" +
-            "\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00B0\u00B1\u00B2" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00FE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            636, 403, 403, 403, 403, 892, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM862.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,396 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM862
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM862() {
-        super("IBM862", StandardCharsets.aliases_IBM862);
-    }
-
-    public String historicalName() {
-        return "Cp862";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM862);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" +        // 0x80 - 0x87
-            "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" +        // 0x88 - 0x8F
-            "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" +        // 0x90 - 0x97
-            "\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192" +        // 0x98 - 0x9F
-            "\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA" +        // 0xA0 - 0xA7
-            "\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" +        // 0xB0 - 0xB7
-            "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" +        // 0xC8 - 0xCF
-            "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" +        // 0xD0 - 0xD7
-            "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +        // 0xD8 - 0xDF
-            "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" +        // 0xE0 - 0xE7
-            "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" +        // 0xE8 - 0xEF
-            "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" +        // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u00AD\u009B\u009C\u0000\u009D\u0000\u0000" +
-            "\u0000\u0000\u00A6\u00AE\u00AA\u0000\u0000\u0000" +
-            "\u00F8\u00F1\u00FD\u0000\u0000\u00E6\u0000\u00FA" +
-            "\u0000\u0000\u00A7\u00AF\u00AC\u00AB\u0000\u00A8" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00A5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" +
-            "\u0000\u00A0\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A1\u0000\u0000" +
-            "\u0000\u00A4\u0000\u00A2\u0000\u0000\u0000\u00F6" +
-            "\u0000\u0000\u00A3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u009F\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00E2\u0000" +
-            "\u0000\u0000\u0000\u00E9\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00E4\u0000" +
-            "\u0000\u00E8\u0000\u0000\u00EA\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00E0\u0000\u0000\u00EB" +
-            "\u00EE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E3\u0000\u0000\u00E5\u00E7" +
-            "\u0000\u00ED\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0080\u0081\u0082\u0083\u0084\u0085" +
-            "\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D" +
-            "\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095" +
-            "\u0096\u0097\u0098\u0099\u009A\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00FC\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u009E\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FB\u0000" +
-            "\u0000\u0000\u00EC\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00EF\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F7\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F0\u0000\u0000" +
-            "\u00F3\u00F2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00A9\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F4\u00F5\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000\u0000" +
-            "\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000\u0000" +
-            "\u00C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00CD\u00BA\u00D5\u00D6" +
-            "\u00C9\u00B8\u00B7\u00BB\u00D4\u00D3\u00C8\u00BE" +
-            "\u00BD\u00BC\u00C6\u00C7\u00CC\u00B5\u00B6\u00B9" +
-            "\u00D1\u00D2\u00CB\u00CF\u00D0\u00CA\u00D8\u00D7" +
-            "\u00CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DF\u0000\u0000\u0000" +
-            "\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" +
-            "\u00DD\u0000\u0000\u0000\u00DE\u00B0\u00B1\u00B2" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00FE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 251, 398, 507, 398, 706, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            941, 398, 1172, 1412, 398, 1668, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-            398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM866.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,332 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM866
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM866() {
-        super("IBM866", StandardCharsets.aliases_IBM866);
-    }
-
-    public String historicalName() {
-        return "Cp866";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM866);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" +        // 0x80 - 0x87
-            "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" +        // 0x88 - 0x8F
-            "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" +        // 0x90 - 0x97
-            "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" +        // 0x98 - 0x9F
-            "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" +        // 0xA0 - 0xA7
-            "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" +        // 0xB0 - 0xB7
-            "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" +        // 0xC8 - 0xCF
-            "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" +        // 0xD0 - 0xD7
-            "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +        // 0xD8 - 0xDF
-            "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" +        // 0xE0 - 0xE7
-            "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" +        // 0xE8 - 0xEF
-            "\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E" +        // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0000\u0000\u00FD\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00F8\u0000\u0000\u0000\u0000\u0000\u0000\u00FA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00F0\u0000\u0000\u00F2\u0000\u0000\u00F4\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F6\u0000\u0080" +
-            "\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088" +
-            "\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090" +
-            "\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098" +
-            "\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0" +
-            "\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8" +
-            "\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00E0" +
-            "\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8" +
-            "\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0000" +
-            "\u00F1\u0000\u0000\u00F3\u0000\u0000\u00F5\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00FC" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F9\u00FB\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C4\u0000\u00B3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" +
-            "\u00BF\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u00C3\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C2\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C1\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CD\u00BA\u00D5\u00D6\u00C9\u00B8\u00B7\u00BB" +
-            "\u00D4\u00D3\u00C8\u00BE\u00BD\u00BC\u00C6\u00C7" +
-            "\u00CC\u00B5\u00B6\u00B9\u00D1\u00D2\u00CB\u00CF" +
-            "\u00D0\u00CA\u00D8\u00D7\u00CE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DF\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" +
-            "\u00DB\u0000\u0000\u0000\u00DD\u0000\u0000\u0000" +
-            "\u00DE\u00B0\u00B1\u00B2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 184, 184, 184, 439, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 673, 904, 184, 184, 1160, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-            184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/IBM874.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-/*
- * Copyright 2003-2005 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM874
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM874() {
-        super("x-IBM874", StandardCharsets.aliases_IBM874);
-    }
-
-    public String historicalName() {
-        return "Cp874";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM874);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x80 - 0x87
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x88 - 0x8F
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x90 - 0x97
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x98 - 0x9F
-            "\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" +        // 0xA0 - 0xA7
-            "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" +        // 0xA8 - 0xAF
-            "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" +        // 0xB0 - 0xB7
-            "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" +        // 0xB8 - 0xBF
-            "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" +        // 0xC0 - 0xC7
-            "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" +        // 0xC8 - 0xCF
-            "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" +        // 0xD0 - 0xD7
-            "\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u0E4C\u0E3F" +        // 0xD8 - 0xDF
-            "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" +        // 0xE0 - 0xE7
-            "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F" +        // 0xE8 - 0xEF
-            "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" +        // 0xF0 - 0xF7
-            "\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u00FC\u0000\u0000\u0000\u00FE\u0000" +
-            "\u0000\u0000\u0000\u0000\u00FD\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A1\u00A2\u00A3" +
-            "\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB" +
-            "\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3" +
-            "\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB" +
-            "\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3" +
-            "\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB" +
-            "\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3" +
-            "\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u0000" +
-            "\u0000\u0000\u0000\u00DF\u00E0\u00E1\u00E2\u00E3" +
-            "\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB" +
-            "\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3" +
-            "\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 428, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            520, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ISO_8859_13.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class ISO_8859_13
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_13() {
-        super("ISO-8859-13", StandardCharsets.aliases_ISO_8859_13);
-    }
-
-    public String historicalName() {
-        return "ISO8859_13";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_13));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static  String byteToCharTable =
-
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-        "\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7" +     // 0xA0 - 0xA7
-        "\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6" +     // 0xA8 - 0xAF
-        "\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-        "\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6" +     // 0xB8 - 0xBF
-        "\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112" +     // 0xC0 - 0xC7
-        "\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B" +     // 0xC8 - 0xCF
-        "\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7" +     // 0xD0 - 0xD7
-        "\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF" +     // 0xD8 - 0xDF
-        "\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113" +     // 0xE0 - 0xE7
-        "\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C" +     // 0xE8 - 0xEF
-        "\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7" +     // 0xF0 - 0xF7
-        "\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019" +     // 0xF8 - 0xFF
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-        "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-    private final static String index2 =
-
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-        "\b\t\n\u000B\f\r\u000E\u000F" +
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-        "\u00A0\u0000\u00A2\u00A3\u00A4\u0000\u00A6\u00A7" +
-        "\u0000\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u0000" +
-        "\u00B0\u00B1\u00B2\u00B3\u0000\u00B5\u00B6\u00B7" +
-        "\u0000\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u0000" +
-        "\u0000\u0000\u0000\u0000\u00C4\u00C5\u00AF\u0000" +
-        "\u0000\u00C9\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u00D3\u0000\u00D5\u00D6\u00D7" +
-        "\u00A8\u0000\u0000\u0000\u00DC\u0000\u0000\u00DF" +
-        "\u0000\u0000\u0000\u0000\u00E4\u00E5\u00BF\u0000" +
-        "\u0000\u00E9\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u00F3\u0000\u00F5\u00F6\u00F7" +
-        "\u00B8\u0000\u0000\u0000\u00FC\u0000\u0000\u0000" +
-        "\u00C2\u00E2\u0000\u0000\u00C0\u00E0\u00C3\u00E3" +
-        "\u0000\u0000\u0000\u0000\u00C8\u00E8\u0000\u0000" +
-        "\u0000\u0000\u00C7\u00E7\u0000\u0000\u00CB\u00EB" +
-        "\u00C6\u00E6\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u00CC\u00EC\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u00CE\u00EE\u0000\u0000\u00C1\u00E1" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u00CD\u00ED" +
-        "\u0000\u0000\u0000\u00CF\u00EF\u0000\u0000\u0000" +
-        "\u0000\u00D9\u00F9\u00D1\u00F1\u00D2\u00F2\u0000" +
-        "\u0000\u0000\u0000\u0000\u00D4\u00F4\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u00AA\u00BA" +
-        "\u0000\u0000\u00DA\u00FA\u0000\u0000\u0000\u0000" +
-        "\u00D0\u00F0\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u00DB\u00FB\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u00D8\u00F8\u0000\u0000\u0000\u0000" +
-        "\u0000\u00CA\u00EA\u00DD\u00FD\u00DE\u00FE\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00FF" +
-        "\u0000\u0000\u00B4\u00A1\u00A5\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        614, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
-      };
-   }
-}
--- a/src/share/classes/sun/nio/cs/ISO_8859_15.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-
-/*
- * Copyright 2000-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-
-
-public class ISO_8859_15 extends Charset implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_15() {
-        super("ISO-8859-15", StandardCharsets.aliases_ISO_8859_15);
-    }
-
-    public String historicalName() {
-        return "ISO8859_15";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs instanceof US_ASCII)
-                || (cs instanceof ISO_8859_1)
-                || (cs instanceof ISO_8859_15));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-            "\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7" +     // 0xA0 - 0xA7
-            "\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +     // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-            "\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF" +     // 0xB8 - 0xBF
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +     // 0xC0 - 0xC7
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +     // 0xC8 - 0xCF
-            "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +     // 0xD0 - 0xD7
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF" +     // 0xD8 - 0xDF
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +     // 0xE0 - 0xE7
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +     // 0xE8 - 0xEF
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +     // 0xF0 - 0xF7
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u00A1\u00A2\u00A3\u0000\u00A5\u0000\u00A7" +
-            "\u0000\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u0000\u00B5\u00B6\u00B7" +
-            "\u0000\u00B9\u00BA\u00BB\u0000\u0000\u0000\u00BF" +
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-            "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF" +
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00BC\u00BD\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A6\u00A8\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00BE\u0000\u0000\u0000\u0000\u00B4\u00B8\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00A4" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            467, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        };
-
-    }
-
-}
--- a/src/share/classes/sun/nio/cs/ISO_8859_2.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-
-public class ISO_8859_2
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_2() {
-        super("ISO-8859-2", StandardCharsets.aliases_ISO_8859_2);
-    }
-
-    public String historicalName() {
-        return "ISO8859_2";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_2));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-            "\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7" +     // 0xA0 - 0xA7
-            "\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B" +     // 0xA8 - 0xAF
-            "\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7" +     // 0xB0 - 0xB7
-            "\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C" +     // 0xB8 - 0xBF
-            "\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7" +     // 0xC0 - 0xC7
-            "\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E" +     // 0xC8 - 0xCF
-            "\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7" +     // 0xD0 - 0xD7
-            "\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF" +     // 0xD8 - 0xDF
-            "\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7" +     // 0xE0 - 0xE7
-            "\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F" +     // 0xE8 - 0xEF
-            "\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7" +     // 0xF0 - 0xF7
-            "\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u0000\u0000\u0000\u00A4\u0000\u0000\u00A7" +
-            "\u00A8\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" +
-            "\u00B0\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" +
-            "\u00B8\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C1\u00C2\u0000\u00C4\u0000\u0000\u00C7" +
-            "\u0000\u00C9\u0000\u00CB\u0000\u00CD\u00CE\u0000" +
-            "\u0000\u0000\u0000\u00D3\u00D4\u0000\u00D6\u00D7" +
-            "\u0000\u0000\u00DA\u0000\u00DC\u00DD\u0000\u00DF" +
-            "\u0000\u00E1\u00E2\u0000\u00E4\u0000\u0000\u00E7" +
-            "\u0000\u00E9\u0000\u00EB\u0000\u00ED\u00EE\u0000" +
-            "\u0000\u0000\u0000\u00F3\u00F4\u0000\u00F6\u00F7" +
-            "\u0000\u0000\u00FA\u0000\u00FC\u00FD\u0000\u0000" +
-            "\u00C3\u00E3\u00A1\u00B1\u00C6\u00E6\u0000\u0000" +
-            "\u0000\u0000\u00C8\u00E8\u00CF\u00EF\u00D0\u00F0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00CA\u00EA" +
-            "\u00CC\u00EC\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C5" +
-            "\u00E5\u0000\u0000\u00A5\u00B5\u0000\u0000\u00A3" +
-            "\u00B3\u00D1\u00F1\u0000\u0000\u00D2\u00F2\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00D5\u00F5" +
-            "\u0000\u0000\u00C0\u00E0\u0000\u0000\u00D8\u00F8" +
-            "\u00A6\u00B6\u0000\u0000\u00AA\u00BA\u00A9\u00B9" +
-            "\u00DE\u00FE\u00AB\u00BB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D9\u00F9\u00DB\u00FB" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AC" +
-            "\u00BC\u00AF\u00BF\u00AE\u00BE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00B7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A2\u00FF" +
-            "\u0000\u00B2\u0000\u00BD\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 254, 438, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ISO_8859_4.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class ISO_8859_4
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_4() {
-        super("ISO-8859-4", StandardCharsets.aliases_ISO_8859_4);
-    }
-
-    public String historicalName() {
-        return "ISO8859_4";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_4));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static  String byteToCharTable =
-
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-        "\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7" +     // 0xA0 - 0xA7
-        "\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF" +     // 0xA8 - 0xAF
-        "\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7" +     // 0xB0 - 0xB7
-        "\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B" +     // 0xB8 - 0xBF
-        "\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E" +     // 0xC0 - 0xC7
-        "\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A" +     // 0xC8 - 0xCF
-        "\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7" +     // 0xD0 - 0xD7
-        "\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF" +     // 0xD8 - 0xDF
-        "\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F" +     // 0xE0 - 0xE7
-        "\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B" +     // 0xE8 - 0xEF
-        "\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7" +     // 0xF0 - 0xF7
-        "\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9" +     // 0xF8 - 0xFF
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-        "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-    private final static String index2 =
-
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-        "\b\t\n\u000B\f\r\u000E\u000F" +
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-        "\u00A0\u0000\u0000\u0000\u00A4\u0000\u0000\u00A7" +
-        "\u00A8\u0000\u0000\u0000\u0000\u00AD\u0000\u00AF" +
-        "\u00B0\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" +
-        "\u00B8\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u0000" +
-        "\u0000\u00C9\u0000\u00CB\u0000\u00CD\u00CE\u0000" +
-        "\u0000\u0000\u0000\u0000\u00D4\u00D5\u00D6\u00D7" +
-        "\u00D8\u0000\u00DA\u00DB\u00DC\u0000\u0000\u00DF" +
-        "\u0000\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u0000" +
-        "\u0000\u00E9\u0000\u00EB\u0000\u00ED\u00EE\u0000" +
-        "\u0000\u0000\u0000\u0000\u00F4\u00F5\u00F6\u00F7" +
-        "\u00F8\u0000\u00FA\u00FB\u00FC\u0000\u0000\u0000" +
-        "\u00C0\u00E0\u0000\u0000\u00A1\u00B1\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u00C8\u00E8\u0000\u0000" +
-        "\u00D0\u00F0\u00AA\u00BA\u0000\u0000\u00CC\u00EC" +
-        "\u00CA\u00EA\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u00AB\u00BB\u0000\u0000\u0000\u0000" +
-        "\u00A5\u00B5\u00CF\u00EF\u0000\u0000\u00C7\u00E7" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u00D3\u00F3" +
-        "\u00A2\u0000\u0000\u00A6\u00B6\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u00D1\u00F1\u0000" +
-        "\u0000\u0000\u00BD\u00BF\u00D2\u00F2\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u00A3\u00B3" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u00A9\u00B9\u0000\u0000\u0000\u0000\u00AC\u00BC" +
-        "\u00DD\u00FD\u00DE\u00FE\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u00D9\u00F9\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u00AE\u00BE\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B7" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u00FF\u0000\u00B2\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        0, 256, 440, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
-      };
-   }
-}
--- a/src/share/classes/sun/nio/cs/ISO_8859_5.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class ISO_8859_5
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_5() {
-        super("ISO-8859-5", StandardCharsets.aliases_ISO_8859_5);
-    }
-
-    public String historicalName() {
-        return "ISO8859_5";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_5));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static  String byteToCharTable =
-
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-        "\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407" +     // 0xA0 - 0xA7
-        "\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F" +     // 0xA8 - 0xAF
-        "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" +     // 0xB0 - 0xB7
-        "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" +     // 0xB8 - 0xBF
-        "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" +     // 0xC0 - 0xC7
-        "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" +     // 0xC8 - 0xCF
-        "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" +     // 0xD0 - 0xD7
-        "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" +     // 0xD8 - 0xDF
-        "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" +     // 0xE0 - 0xE7
-        "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" +     // 0xE8 - 0xEF
-        "\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457" +     // 0xF0 - 0xF7
-        "\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F" +     // 0xF8 - 0xFF
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-        "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-    private final static String index2 =
-
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-        "\b\t\n\u000B\f\r\u000E\u000F" +
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-        "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u00FD" +
-        "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u00A1\u00A2" +
-        "\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA" +
-        "\u00AB\u00AC\u0000\u00AE\u00AF\u00B0\u00B1\u00B2" +
-        "\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA" +
-        "\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2" +
-        "\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA" +
-        "\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2" +
-        "\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA" +
-        "\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2" +
-        "\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA" +
-        "\u00EB\u00EC\u00ED\u00EE\u00EF\u0000\u00F1\u00F2" +
-        "\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA" +
-        "\u00FB\u00FC\u0000\u00FE\u00FF\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u00F0\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        0, 174, 174, 174, 429, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 663, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-
-      };
-   }
-}
--- a/src/share/classes/sun/nio/cs/ISO_8859_7.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +0,0 @@
-/*
- * Copyright 2002-2006 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class ISO_8859_7
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_7() {
-        super("ISO-8859-7", StandardCharsets.aliases_ISO_8859_7);
-    }
-
-    public String historicalName() {
-        return "ISO8859_7";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_7));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static  String byteToCharTable =
-
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-        "\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7" +     // 0xA0 - 0xA7
-        "\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015" +     // 0xA8 - 0xAF
-        "\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7" +     // 0xB0 - 0xB7
-        "\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F" +     // 0xB8 - 0xBF
-        "\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397" +     // 0xC0 - 0xC7
-        "\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F" +     // 0xC8 - 0xCF
-        "\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7" +     // 0xD0 - 0xD7
-        "\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF" +     // 0xD8 - 0xDF
-        "\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7" +     // 0xE0 - 0xE7
-        "\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF" +     // 0xE8 - 0xEF
-        "\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7" +     // 0xF0 - 0xF7
-        "\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" +     // 0xF8 - 0xFF
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-        "\b\t\n\u000B\f\r\u000E\u000F"                     +     // 0x08 - 0x0F
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'"         +     // 0x20 - 0x27
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F"     +     // 0x58 - 0x5F
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";      // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-    private final static String index2 =
-
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-        "\b\t\n\u000B\f\r\u000E\u000F" +
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-        "\u00A0\u0000\u0000\u00A3\u0000\u0000\u00A6\u00A7" +
-        "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u0000\u0000" +
-        "\u00B0\u00B1\u00B2\u00B3\u0000\u0000\u0000\u00B7" +
-        "\u0000\u0000\u0000\u00BB\u0000\u00BD\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u00AA\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u00B4\u00B5\u00B6\u0000\u00B8\u00B9\u00BA\u0000" +
-        "\u00BC\u0000\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3" +
-        "\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB" +
-        "\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u0000\u00D3" +
-        "\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB" +
-        "\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3" +
-        "\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB" +
-        "\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3" +
-        "\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB" +
-        "\u00FC\u00FD\u00FE\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u00AF\u0000\u0000\u00A1" +
-        "\u00A2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u00A4\u0000\u0000\u00A5\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        0, 190, 190, 324, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        559, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-        190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-      };
-   }
-}
--- a/src/share/classes/sun/nio/cs/ISO_8859_9.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class ISO_8859_9
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_9() {
-        super("ISO-8859-9", StandardCharsets.aliases_ISO_8859_9);
-    }
-
-    public String historicalName() {
-        return "ISO8859_9";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_9));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static  String byteToCharTable =
-
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-        "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +     // 0xA0 - 0xA7
-        "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +     // 0xA8 - 0xAF
-        "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-        "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +     // 0xB8 - 0xBF
-        "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +     // 0xC0 - 0xC7
-        "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +     // 0xC8 - 0xCF
-        "\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +     // 0xD0 - 0xD7
-        "\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF" +     // 0xD8 - 0xDF
-        "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +     // 0xE0 - 0xE7
-        "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +     // 0xE8 - 0xEF
-        "\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +     // 0xF0 - 0xF7
-        "\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF" +     // 0xF8 - 0xFF
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-        "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-    private final static String index2 =
-
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-        "\b\t\n\u000B\f\r\u000E\u000F" +
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-        "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-        "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-        "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-        "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-        "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-        "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-        "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-        "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +
-        "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-        "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-        "\u0000\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +
-        "\u00D8\u00D9\u00DA\u00DB\u00DC\u0000\u0000\u00DF" +
-        "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-        "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-        "\u0000\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-        "\u00F8\u00F9\u00FA\u00FB\u00FC\u0000\u0000\u00FF" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u00D0\u00F0" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u00DD\u00FD\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u00DE\u00FE" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        0, 256, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-        352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-
-      };
-   }
-}
--- a/src/share/classes/sun/nio/cs/KOI8_R.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,344 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-
-
-public class KOI8_R
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public KOI8_R() {
-        super("KOI8-R", StandardCharsets.aliases_KOI8_R);
-    }
-
-    public String historicalName() {
-        return "KOI8_R";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof KOI8_R));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524" +     // 0x80 - 0x87
-            "\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590" +     // 0x88 - 0x8F
-            "\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248" +     // 0x90 - 0x97
-            "\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7" +     // 0x98 - 0x9F
-            "\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556" +     // 0xA0 - 0xA7
-            "\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E" +     // 0xA8 - 0xAF
-            "\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565" +     // 0xB0 - 0xB7
-            "\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9" +     // 0xB8 - 0xBF
-            "\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433" +     // 0xC0 - 0xC7
-            "\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E" +     // 0xC8 - 0xCF
-            "\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432" +     // 0xD0 - 0xD7
-            "\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A" +     // 0xD8 - 0xDF
-            "\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413" +     // 0xE0 - 0xE7
-            "\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E" +     // 0xE8 - 0xEF
-            "\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412" +     // 0xF0 - 0xF7
-            "\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009A\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00BF\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009C\u0000\u009D\u0000\u0000\u0000\u0000\u009E" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" +
-            "\u00E2\u00F7\u00E7\u00E4\u00E5\u00F6\u00FA\u00E9" +
-            "\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F2" +
-            "\u00F3\u00F4\u00F5\u00E6\u00E8\u00E3\u00FE\u00FB" +
-            "\u00FD\u00FF\u00F9\u00F8\u00FC\u00E0\u00F1\u00C1" +
-            "\u00C2\u00D7\u00C7\u00C4\u00C5\u00D6\u00DA\u00C9" +
-            "\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D2" +
-            "\u00D3\u00D4\u00D5\u00C6\u00C8\u00C3\u00DE\u00DB" +
-            "\u00DD\u00DF\u00D9\u00D8\u00DC\u00C0\u00D1\u0000" +
-            "\u00A3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0095" +
-            "\u0096\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0097\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0098\u0099\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0093\u009B" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0000" +
-            "\u0081\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0082\u0000\u0000\u0000\u0083\u0000" +
-            "\u0000\u0000\u0084\u0000\u0000\u0000\u0085\u0000" +
-            "\u0000\u0000\u0086\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0087\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0088\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0089\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u008A\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A0\u00A1" +
-            "\u00A2\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA" +
-            "\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2" +
-            "\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB" +
-            "\u00BC\u00BD\u00BE\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u008B\u0000" +
-            "\u0000\u0000\u008C\u0000\u0000\u0000\u008D\u0000" +
-            "\u0000\u0000\u008E\u0000\u0000\u0000\u008F\u0090" +
-            "\u0091\u0092\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0094\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 248, 248, 248, 503, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 734, 958, 248, 1214, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/KOI8_U.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,323 +0,0 @@
-/*
- * Copyright 2006 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-
-/*
- * An implementation of charset KOI8_U as specified by
- * http://www.net.ua/KOI8-U
- */
-
-public class KOI8_U
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public KOI8_U() {
-        super("KOI8-U", StandardCharsets.aliases_KOI8_U);
-    }
-
-    public String historicalName() {
-        return "KOI8_U";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof KOI8_U));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-            "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524" +     // 0x80 - 0x87
-            "\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590" +     // 0x88 - 0x8F
-            "\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248" +     // 0x90 - 0x97
-            "\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7" +     // 0x98 - 0x9F
-            "\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457" +     // 0xA0 - 0xA7
-            "\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E" +     // 0xA8 - 0xAF
-            "\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407" +     // 0xB0 - 0xB7
-            "\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9" +     // 0xB8 - 0xBF
-            "\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433" +     // 0xC0 - 0xC7
-            "\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E" +     // 0xC8 - 0xCF
-            "\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432" +     // 0xD0 - 0xD7
-            "\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A" +     // 0xD8 - 0xDF
-            "\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413" +     // 0xE0 - 0xE7
-            "\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E" +     // 0xE8 - 0xEF
-            "\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412" +     // 0xF0 - 0xF7
-            "\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +                         // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +             // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +         // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";      // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009A\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00BF\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009C\u0000\u009D\u0000\u0000\u0000\u0000\u009E" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00B3\u0000\u0000\u00B4\u0000\u00B6\u00B7\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" +
-            "\u00E2\u00F7\u00E7\u00E4\u00E5\u00F6\u00FA\u00E9" +
-            "\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F2" +
-            "\u00F3\u00F4\u00F5\u00E6\u00E8\u00E3\u00FE\u00FB" +
-            "\u00FD\u00FF\u00F9\u00F8\u00FC\u00E0\u00F1\u00C1" +
-            "\u00C2\u00D7\u00C7\u00C4\u00C5\u00D6\u00DA\u00C9" +
-            "\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D2" +
-            "\u00D3\u00D4\u00D5\u00C6\u00C8\u00C3\u00DE\u00DB" +
-            "\u00DD\u00DF\u00D9\u00D8\u00DC\u00C0\u00D1\u0000" +
-            "\u00A3\u0000\u0000\u00A4\u0000\u00A6\u00A7\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BD" +
-            "\u00AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0095" +
-            "\u0096\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0097\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0098\u0099\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0093\u009B" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0000" +
-            "\u0081\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0082\u0000\u0000\u0000\u0083\u0000" +
-            "\u0000\u0000\u0084\u0000\u0000\u0000\u0085\u0000" +
-            "\u0000\u0000\u0086\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0087\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0088\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0089\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u008A\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A0\u00A1" +
-            "\u00A2\u0000\u00A5\u0000\u0000\u00A8\u00A9\u00AA" +
-            "\u00AB\u00AC\u0000\u00AE\u00AF\u00B0\u00B1\u00B2" +
-            "\u0000\u00B5\u0000\u0000\u00B8\u00B9\u00BA\u00BB" +
-            "\u00BC\u0000\u00BE\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u008B\u0000" +
-            "\u0000\u0000\u008C\u0000\u0000\u0000\u008D\u0000" +
-            "\u0000\u0000\u008E\u0000\u0000\u0000\u008F\u0090" +
-            "\u0091\u0092\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0094\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 248, 248, 248, 503, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 734, 958, 248, 1214, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/MS1250.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-
-public class MS1250
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public String historicalName() {
-        return "Cp1250";
-    }
-
-    public MS1250() {
-        super("windows-1250", StandardCharsets.aliases_MS1250);
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS1250));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021" +     // 0x80 - 0x87
-            "\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179" +     // 0x88 - 0x8F
-            "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +     // 0x90 - 0x97
-            "\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A" +     // 0x98 - 0x9F
-            "\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7" +     // 0xA0 - 0xA7
-            "\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B" +     // 0xA8 - 0xAF
-            "\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-            "\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C" +     // 0xB8 - 0xBF
-            "\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7" +     // 0xC0 - 0xC7
-            "\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E" +     // 0xC8 - 0xCF
-            "\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7" +     // 0xD0 - 0xD7
-            "\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF" +     // 0xD8 - 0xDF
-            "\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7" +     // 0xE0 - 0xE7
-            "\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F" +     // 0xE8 - 0xEF
-            "\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7" +     // 0xF0 - 0xF7
-            "\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u0000\u0000\u00A4\u0000\u00A6\u00A7" +
-            "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u0000" +
-            "\u00B0\u00B1\u0000\u0000\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u0000\u0000\u00BB\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C1\u00C2\u0000\u00C4\u0000\u0000\u00C7" +
-            "\u0000\u00C9\u0000\u00CB\u0000\u00CD\u00CE\u0000" +
-            "\u0000\u0000\u0000\u00D3\u00D4\u0000\u00D6\u00D7" +
-            "\u0000\u0000\u00DA\u0000\u00DC\u00DD\u0000\u00DF" +
-            "\u0000\u00E1\u00E2\u0000\u00E4\u0000\u0000\u00E7" +
-            "\u0000\u00E9\u0000\u00EB\u0000\u00ED\u00EE\u0000" +
-            "\u0000\u0000\u0000\u00F3\u00F4\u0000\u00F6\u00F7" +
-            "\u0000\u0000\u00FA\u0000\u00FC\u00FD\u0000\u0000" +
-            "\u00C3\u00E3\u00A5\u00B9\u00C6\u00E6\u0000\u0000" +
-            "\u0000\u0000\u00C8\u00E8\u00CF\u00EF\u00D0\u00F0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00CA\u00EA" +
-            "\u00CC\u00EC\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C5" +
-            "\u00E5\u0000\u0000\u00BC\u00BE\u0000\u0000\u00A3" +
-            "\u00B3\u00D1\u00F1\u0000\u0000\u00D2\u00F2\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00D5\u00F5" +
-            "\u0000\u0000\u00C0\u00E0\u0000\u0000\u00D8\u00F8" +
-            "\u008C\u009C\u0000\u0000\u00AA\u00BA\u008A\u009A" +
-            "\u00DE\u00FE\u008D\u009D\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D9\u00F9\u00DB\u00FB" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008F" +
-            "\u009F\u00AF\u00BF\u008E\u009E\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A1\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A2\u00FF" +
-            "\u0000\u00B2\u0000\u00BD\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0096\u0097" +
-            "\u0000\u0000\u0000\u0091\u0092\u0082\u0000\u0093" +
-            "\u0094\u0084\u0000\u0086\u0087\u0095\u0000\u0000" +
-            "\u0000\u0085\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0089\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u008B\u009B\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0080" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0099\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000";
-
-        private final static short index1[] = {
-            0, 254, 438, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            675, 897, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/MS1251.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-
-public class MS1251
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public String historicalName() {
-        return "Cp1251";
-    }
-
-    public MS1251() {
-        super("windows-1251", StandardCharsets.aliases_MS1251);
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS1251));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021" +        // 0x80 - 0x87
-            "\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F" +        // 0x88 - 0x8F
-            "\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +        // 0x90 - 0x97
-            "\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F" +        // 0x98 - 0x9F
-            "\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7" +        // 0xA0 - 0xA7
-            "\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407" +        // 0xA8 - 0xAF
-            "\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7" +        // 0xB0 - 0xB7
-            "\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457" +        // 0xB8 - 0xBF
-            "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" +        // 0xC0 - 0xC7
-            "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" +        // 0xC8 - 0xCF
-            "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" +        // 0xD0 - 0xD7
-            "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" +        // 0xD8 - 0xDF
-            "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" +        // 0xE0 - 0xE7
-            "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" +        // 0xE8 - 0xEF
-            "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" +        // 0xF0 - 0xF7
-            "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u0000\u0000\u00A4\u0000\u00A6\u00A7" +
-            "\u0000\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u0000" +
-            "\u00B0\u00B1\u0000\u0000\u0000\u00B5\u00B6\u00B7" +
-            "\u0000\u0000\u0000\u00BB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00A8\u0080\u0081\u00AA" +
-            "\u00BD\u00B2\u00AF\u00A3\u008A\u008C\u008E\u008D" +
-            "\u0000\u00A1\u008F\u00C0\u00C1\u00C2\u00C3\u00C4" +
-            "\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC" +
-            "\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4" +
-            "\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC" +
-            "\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4" +
-            "\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC" +
-            "\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4" +
-            "\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC" +
-            "\u00FD\u00FE\u00FF\u0000\u00B8\u0090\u0083\u00BA" +
-            "\u00BE\u00B3\u00BF\u00BC\u009A\u009C\u009E\u009D" +
-            "\u0000\u00A2\u009F\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00A5\u00B4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0096\u0097\u0000\u0000\u0000" +
-            "\u0091\u0092\u0082\u0000\u0093\u0094\u0084\u0000" +
-            "\u0086\u0087\u0095\u0000\u0000\u0000\u0085\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0089\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u008B\u009B\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0088\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00B9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0099\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 188, 188, 188, 443, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            680, 914, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/MS1252.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-/*
- * Copyright 2000-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-
-
-public class MS1252
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MS1252() {
-        super("windows-1252", StandardCharsets.aliases_MS1252);
-    }
-
-    public String historicalName() {
-        return "Cp1252";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs instanceof MS1252)
-                || (cs instanceof US_ASCII));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021" +     // 0x80 - 0x87
-            "\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD" +     // 0x88 - 0x8F
-            "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +     // 0x90 - 0x97
-            "\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178" +     // 0x98 - 0x9F
-            "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +     // 0xA0 - 0xA7
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +     // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +     // 0xB8 - 0xBF
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +     // 0xC0 - 0xC7
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +     // 0xC8 - 0xCF
-            "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +     // 0xD0 - 0xD7
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF" +     // 0xD8 - 0xDF
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +     // 0xE0 - 0xE7
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +     // 0xE8 - 0xEF
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +     // 0xF0 - 0xF7
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-            "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF" +
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u008C\u009C\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u008A\u009A\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u008E\u009E\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0083\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0088\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0098\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0096\u0097\u0000" +
-            "\u0000\u0000\u0091\u0092\u0082\u0000\u0093\u0094" +
-            "\u0084\u0000\u0086\u0087\u0095\u0000\u0000\u0000" +
-            "\u0085\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0089\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008B\u009B\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0099\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 461, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            698, 920, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/MS1253.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,303 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-
-public class MS1253
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public String historicalName() {
-        return "Cp1253";
-    }
-
-    public MS1253() {
-        super("windows-1253", StandardCharsets.aliases_MS1253);
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS1253));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021" +        // 0x80 - 0x87
-            "\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x88 - 0x8F
-            "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +        // 0x90 - 0x97
-            "\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x98 - 0x9F
-            "\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7" +        // 0xA0 - 0xA7
-            "\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015" +        // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7" +        // 0xB0 - 0xB7
-            "\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F" +        // 0xB8 - 0xBF
-            "\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397" +        // 0xC0 - 0xC7
-            "\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F" +        // 0xC8 - 0xCF
-            "\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7" +        // 0xD0 - 0xD7
-            "\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF" +        // 0xD8 - 0xDF
-            "\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7" +        // 0xE0 - 0xE7
-            "\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF" +        // 0xE8 - 0xEF
-            "\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7" +        // 0xF0 - 0xF7
-            "\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-        private final static String index2 =
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u0000\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u0000" +
-            "\u00B0\u00B1\u00B2\u00B3\u0000\u00B5\u00B6\u00B7" +
-            "\u0000\u0000\u0000\u00BB\u0000\u00BD\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0083\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B4\u00A1\u00A2\u0000\u00B8\u00B9\u00BA" +
-            "\u0000\u00BC\u0000\u00BE\u00BF\u00C0\u00C1\u00C2" +
-            "\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA" +
-            "\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u0000" +
-            "\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA" +
-            "\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2" +
-            "\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA" +
-            "\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2" +
-            "\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA" +
-            "\u00FB\u00FC\u00FD\u00FE\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0096\u0097\u00AF" +
-            "\u0000\u0000\u0091\u0092\u0082\u0000\u0093\u0094" +
-            "\u0084\u0000\u0086\u0087\u0095\u0000\u0000\u0000" +
-            "\u0085\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0089\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008B\u009B\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0099\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 190, 337, 461, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            698, 920, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/MS1254.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,305 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-
-public class MS1254
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public String historicalName() {
-        return "Cp1254";
-    }
-
-    public MS1254() {
-        super("windows-1254", StandardCharsets.aliases_MS1254);
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS1254));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021" +        // 0x80 - 0x87
-            "\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD" +        // 0x88 - 0x8F
-            "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +        // 0x90 - 0x97
-            "\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178" +        // 0x98 - 0x9F
-            "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +        // 0xA0 - 0xA7
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +        // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +        // 0xB0 - 0xB7
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +        // 0xB8 - 0xBF
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +        // 0xC0 - 0xC7
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +        // 0xC8 - 0xCF
-            "\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +        // 0xD0 - 0xD7
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF" +        // 0xD8 - 0xDF
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +        // 0xE0 - 0xE7
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +        // 0xE8 - 0xEF
-            "\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +        // 0xF0 - 0xF7
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-            "\u0000\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u0000\u0000\u00DF" +
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-            "\u0000\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u0000\u0000\u00FF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00D0\u00F0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DD\u00FD\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u008C\u009C\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DE\u00FE" +
-            "\u008A\u009A\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0083\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0088\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0098\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0096\u0097\u0000" +
-            "\u0000\u0000\u0091\u0092\u0082\u0000\u0093\u0094" +
-            "\u0084\u0000\u0086\u0087\u0095\u0000\u0000\u0000" +
-            "\u0085\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0089\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008B\u009B\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0099\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 461, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            698, 920, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/MS1257.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-
-public class MS1257
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public String historicalName() {
-        return "Cp1257";
-    }
-
-    public MS1257() {
-        super("windows-1257", StandardCharsets.aliases_MS1257);
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS1257));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021" +        // 0x80 - 0x87
-            "\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8" +        // 0x88 - 0x8F
-            "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +        // 0x90 - 0x97
-            "\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD" +        // 0x98 - 0x9F
-            "\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7" +        // 0xA0 - 0xA7
-            "\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6" +        // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +        // 0xB0 - 0xB7
-            "\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6" +        // 0xB8 - 0xBF
-            "\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112" +        // 0xC0 - 0xC7
-            "\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B" +        // 0xC8 - 0xCF
-            "\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7" +        // 0xD0 - 0xD7
-            "\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF" +        // 0xD8 - 0xDF
-            "\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113" +        // 0xE0 - 0xE7
-            "\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C" +        // 0xE8 - 0xEF
-            "\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7" +        // 0xF0 - 0xF7
-            "\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u00A2\u00A3\u00A4\u0000\u00A6\u00A7" +
-            "\u008D\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u009D" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u008F\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C4\u00C5\u00AF\u0000" +
-            "\u0000\u00C9\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00D3\u0000\u00D5\u00D6\u00D7" +
-            "\u00A8\u0000\u0000\u0000\u00DC\u0000\u0000\u00DF" +
-            "\u0000\u0000\u0000\u0000\u00E4\u00E5\u00BF\u0000" +
-            "\u0000\u00E9\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F3\u0000\u00F5\u00F6\u00F7" +
-            "\u00B8\u0000\u0000\u0000\u00FC\u0000\u0000\u0000" +
-            "\u00C2\u00E2\u0000\u0000\u00C0\u00E0\u00C3\u00E3" +
-            "\u0000\u0000\u0000\u0000\u00C8\u00E8\u0000\u0000" +
-            "\u0000\u0000\u00C7\u00E7\u0000\u0000\u00CB\u00EB" +
-            "\u00C6\u00E6\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00CC\u00EC\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00CE\u00EE\u0000\u0000\u00C1\u00E1" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00CD\u00ED" +
-            "\u0000\u0000\u0000\u00CF\u00EF\u0000\u0000\u0000" +
-            "\u0000\u00D9\u00F9\u00D1\u00F1\u00D2\u00F2\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D4\u00F4\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00AA\u00BA" +
-            "\u0000\u0000\u00DA\u00FA\u0000\u0000\u0000\u0000" +
-            "\u00D0\u00F0\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00DB\u00FB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00D8\u00F8\u0000\u0000\u0000\u0000" +
-            "\u0000\u00CA\u00EA\u00DD\u00FD\u00DE\u00FE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008E" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00FF\u0000\u009E\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0096\u0097\u0000\u0000\u0000\u0091\u0092\u0082" +
-            "\u0000\u0093\u0094\u0084\u0000\u0086\u0087\u0095" +
-            "\u0000\u0000\u0000\u0085\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0089\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u008B\u009B" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0080\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0099\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 440, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            677, 899, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-        };
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/nio/cs/SingleByte.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,241 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs;
+
+import java.nio.Buffer;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import static sun.nio.cs.CharsetMapping.*;
+
+public class SingleByte
+{
+    private static final CoderResult withResult(CoderResult cr,
+                                                Buffer src, int sp,
+                                                Buffer dst, int dp)
+    {
+        src.position(sp - src.arrayOffset());
+        dst.position(dp - dst.arrayOffset());
+        return cr;
+    }
+
+    public static class Decoder extends CharsetDecoder {
+        private final char[] b2c;
+
+        public Decoder(Charset cs, char[] b2c) {
+            super(cs, 1.0f, 1.0f);
+            this.b2c = b2c;
+        }
+
+        private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
+            byte[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+
+            char[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+
+            CoderResult cr = CoderResult.UNDERFLOW;
+            if ((dl - dp) < (sl - sp)) {
+                sl = sp + (dl - dp);
+                cr = CoderResult.OVERFLOW;
+            }
+
+            while (sp < sl) {
+                char c = decode(sa[sp]);
+                if (c == UNMAPPABLE_DECODING) {
+                    return withResult(CoderResult.unmappableForLength(1),
+                               src, sp, dst, dp);
+                }
+                da[dp++] = c;
+                sp++;
+            }
+            return withResult(cr, src, sp, dst, dp);
+        }
+
+        private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    char c = decode(src.get());
+                    if (c == UNMAPPABLE_DECODING)
+                        return CoderResult.unmappableForLength(1);
+                    if (!dst.hasRemaining())
+                        return CoderResult.OVERFLOW;
+                    dst.put(c);
+                    mark++;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
+            if (src.hasArray() && dst.hasArray())
+                return decodeArrayLoop(src, dst);
+            else
+                return decodeBufferLoop(src, dst);
+        }
+
+        private final char decode(int b) {
+            return b2c[b + 128];
+        }
+    }
+
+    public static class Encoder extends CharsetEncoder {
+        private Surrogate.Parser sgp;
+        private final char[] c2b;
+        private final char[] c2bIndex;
+
+        public Encoder(Charset cs, char[] c2b, char[] c2bIndex) {
+            super(cs, 1.0f, 1.0f);
+            this.c2b = c2b;
+            this.c2bIndex = c2bIndex;
+        }
+
+        public boolean canEncode(char c) {
+            return encode(c) != UNMAPPABLE_ENCODING;
+        }
+
+        private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
+            char[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+
+            byte[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+
+            CoderResult cr = CoderResult.UNDERFLOW;
+            if ((dl - dp) < (sl - sp)) {
+                sl = sp + (dl - dp);
+                cr = CoderResult.OVERFLOW;
+            }
+
+            while (sp < sl) {
+                char c = sa[sp];
+                int b = encode(c);
+                if (b == UNMAPPABLE_ENCODING) {
+                    if (Surrogate.is(c)) {
+                        if (sgp == null)
+                            sgp = new Surrogate.Parser();
+                        if (sgp.parse(c, sa, sp, sl) < 0)
+                            return withResult(sgp.error(), src, sp, dst, dp);
+                        return withResult(sgp.unmappableResult(), src, sp, dst, dp);
+                    }
+                    return withResult(CoderResult.unmappableForLength(1),
+                               src, sp, dst, dp);
+                }
+                da[dp++] = (byte)b;
+                sp++;
+            }
+            return withResult(cr, src, sp, dst, dp);
+        }
+
+        private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    char c = src.get();
+                    int b = encode(c);
+                    if (b == UNMAPPABLE_ENCODING) {
+                        if (Surrogate.is(c)) {
+                            if (sgp == null)
+                                sgp = new Surrogate.Parser();
+                            if (sgp.parse(c, src) < 0)
+                                return sgp.error();
+                            return sgp.unmappableResult();
+                        }
+                        return CoderResult.unmappableForLength(1);
+                    }
+                    if (!dst.hasRemaining())
+                        return CoderResult.OVERFLOW;
+                    dst.put((byte)b);
+                    mark++;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
+
+        protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
+            if (src.hasArray() && dst.hasArray())
+                return encodeArrayLoop(src, dst);
+            else
+                return encodeBufferLoop(src, dst);
+        }
+
+        private final int encode(char ch) {
+            char index = c2bIndex[ch >> 8];
+            if (index == UNMAPPABLE_ENCODING)
+                return UNMAPPABLE_ENCODING;
+            return c2b[index + (ch & 0xff)];
+        }
+    }
+
+    // init the c2b and c2bIndex tables from b2c.
+    public static void initC2B(char[] b2c, char[] c2bNR,
+                               char[] c2b, char[] c2bIndex) {
+        for (int i = 0; i < c2bIndex.length; i++)
+            c2bIndex[i] = UNMAPPABLE_ENCODING;
+        for (int i = 0; i < c2b.length; i++)
+            c2b[i] = UNMAPPABLE_ENCODING;
+        int off = 0;
+        for (int i = 0; i < b2c.length; i++) {
+            char c = b2c[i];
+            if (c == UNMAPPABLE_DECODING)
+                continue;
+            int index = (c >> 8);
+            if (c2bIndex[index] == UNMAPPABLE_ENCODING) {
+                c2bIndex[index] = (char)off;
+                off += 0x100;
+            }
+            index = c2bIndex[index] + (c & 0xff);
+            c2b[index] = (char)((i>=0x80)?(i-0x80):(i+0x80));
+        }
+        if (c2bNR != null) {
+            // c-->b nr entries
+            int i = 0;
+            while (i < c2bNR.length) {
+                char b = c2bNR[i++];
+                char c = c2bNR[i++];
+                int index = (c >> 8);
+                if (c2bIndex[index] == UNMAPPABLE_ENCODING) {
+                    c2bIndex[index] = (char)off;
+                    off += 0x100;
+                }
+                index = c2bIndex[index] + (c & 0xff);
+                c2b[index] = b;
+            }
+        }
+    }
+}
--- a/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Thu Jan 29 18:33:52 2009 -0800
@@ -770,6 +770,7 @@
                 new String[] {
                     "cp834",
                     "ibm834",
+                    "834",
                     "ibm-834"
         });
 
--- a/src/share/classes/sun/nio/cs/ext/IBM037.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM037
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM037() {
-        super("IBM037", ExtendedCharsets.aliasesFor("IBM037"));
-    }
-
-    public String historicalName() {
-        return "Cp037";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM037);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-            }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u005E\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u005B\u005D\u00AF\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\u00E7\u00F1\u00A2\u002E\u003C\u0028\u002B\u007C" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u0021\u0024\u002A\u0029\u003B\u00AC" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    protected static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u00B0\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u004A\u00B1\u009F\u00B2\u006A\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1006.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1006
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1006() {
-        super("x-IBM1006", ExtendedCharsets.aliasesFor("x-IBM1006"));
-    }
-
-    public String historicalName() {
-        return "Cp1006";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1006);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +        // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +        // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +        // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +        // 0x98 - 0x9F
-            "\u00A0\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6" +        // 0xA0 - 0xA7
-            "\u06F7\u06F8\u06F9\u060C\u061B\u00AD\u061F\uFE81" +        // 0xA8 - 0xAF
-            "\uFE8D\uFE8E\uF8FB\uFE8F\uFE91\uFB56\uFB58\uFE93" +        // 0xB0 - 0xB7
-            "\uFE95\uFE97\uFB66\uFB68\uFE99\uFE9B\uFE9D\uFE9F" +        // 0xB8 - 0xBF
-            "\uFB7A\uFB7C\uFEA1\uFEA3\uFEA5\uFEA7\uFEA9\uFB88" +        // 0xC0 - 0xC7
-            "\uFEAB\uFEAD\uFB8C\uFEAF\uFB8A\uFEB1\uFEB3\uFEB5" +        // 0xC8 - 0xCF
-            "\uFEB7\uFEB9\uFEBB\uFEBD\uFEBF\uFEC3\uFEC7\uFEC9" +        // 0xD0 - 0xD7
-            "\uFECA\uFECB\uFECC\uFECD\uFECE\uFECF\uFED0\uFED1" +        // 0xD8 - 0xDF
-            "\uFED3\uFED5\uFED7\uFB8E\uFEDB\uFB92\uFB94\uFEDD" +        // 0xE0 - 0xE7
-            "\uFEDF\uFEE0\uFEE1\uFEE3\uFB9E\uFEE5\uFEE7\uFE85" +        // 0xE8 - 0xEF
-            "\uFEED\uFBA6\uFBA8\uFBA9\uFBAA\uFE80\uFE89\uFE8A" +        // 0xF0 - 0xF7
-            "\uFE8B\uFBFC\uFBFD\uFBFE\uFBB0\uFBAE\uFE7C\uFE7D" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00AB\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00AC\u0000\u0000" +
-            "\u0000\u00AE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00AA\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B2" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00B5\u0000" +
-            "\u00B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00BA\u0000" +
-            "\u00BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C0\u0000\u00C1\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C7\u0000\u00CC\u0000\u00CA\u0000\u00E3\u0000" +
-            "\u0000\u0000\u00E5\u0000\u00E6\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00EC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F1\u0000" +
-            "\u00F2\u00F3\u00F4\u0000\u0000\u0000\u00FD\u0000" +
-            "\u00FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00FE\u00FF\u0000\u0000\u00F5" +
-            "\u00AF\u0000\u0000\u0000\u00EF\u0000\u0000\u0000" +
-            "\u00F6\u00F7\u00F8\u0000\u00B0\u00B1\u00B3\u0000" +
-            "\u00B4\u0000\u00B7\u0000\u00B8\u0000\u00B9\u0000" +
-            "\u00BC\u0000\u00BD\u0000\u00BE\u0000\u00BF\u0000" +
-            "\u00C2\u0000\u00C3\u0000\u00C4\u0000\u00C5\u0000" +
-            "\u00C6\u0000\u00C8\u0000\u00C9\u0000\u00CB\u0000" +
-            "\u00CD\u0000\u00CE\u0000\u00CF\u0000\u00D0\u0000" +
-            "\u00D1\u0000\u00D2\u0000\u00D3\u0000\u00D4\u0000" +
-            "\u0000\u0000\u00D5\u0000\u0000\u0000\u00D6\u0000" +
-            "\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE" +
-            "\u00DF\u0000\u00E0\u0000\u00E1\u0000\u00E2\u0000" +
-            "\u0000\u0000\u00E4\u0000\u00E7\u0000\u00E8\u00E9" +
-            "\u00EA\u0000\u00EB\u0000\u00ED\u0000\u00EE\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F0\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 174, 174, 174, 174, 174, 418, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 668, 174, 174, 920, 174, 174, 1175, 174,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1025.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1025
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1025() {
-        super("x-IBM1025", ExtendedCharsets.aliasesFor("x-IBM1025"));
-    }
-
-    public String historicalName() {
-        return "Cp1025";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1025);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0446\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u0434\u0435\u0444\u0433\u0445\u0438" +        // 0x88 - 0x8F
-            "\u0439\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u043A\u043B\u043C\u043D\u043E\u043F" +        // 0x98 - 0x9F
-            "\u044F\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u0440\u0441\u0442\u0443\u0436\u0432" +        // 0xA8 - 0xAF
-            "\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A" +        // 0xB0 - 0xB7
-            "\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u0425\u0418\u0419\u041A\u041B\u041C" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u041D\u041E\u041F\u042F\u0420\u0421" +        // 0xD8 - 0xDF
-            "\\\u00A7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u0422\u0423\u0416\u0412\u042C\u042B" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u0417\u0428\u042D\u0429\u0427\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u0452\u0453\u0451\u0454\u0455\u0456" +        // 0x40 - 0x47
-            "\u0457\u0458\u005B\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u0459\u045A\u045B\u045C\u045E\u045F\u042A" +        // 0x50 - 0x57
-            "\u2116\u0402\u005D\u0024\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u0403\u0401\u0404\u0405\u0406\u0407" +        // 0x60 - 0x67
-            "\u0408\u0409\u007C\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u040A\u040B\u040C\u00AD\u040E\u040F\u044E\u0430" +        // 0x70 - 0x77
-            "\u0431\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u006A\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" +
-            "\u0000\u0000\u0000\u0000\u0000\u0073\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0063\u0059" +
-            "\u0062\u0064\u0065\u0066\u0067\u0068\u0069\u0070" +
-            "\u0071\u0072\u0000\u0074\u0075\u00B9\u00BA\u00ED" +
-            "\u00BF\u00BC\u00BD\u00EC\u00FA\u00CB\u00CC\u00CD" +
-            "\u00CE\u00CF\u00DA\u00DB\u00DC\u00DE\u00DF\u00EA" +
-            "\u00EB\u00BE\u00CA\u00BB\u00FE\u00FB\u00FD\u0057" +
-            "\u00EF\u00EE\u00FC\u00B8\u00DD\u0077\u0078\u00AF" +
-            "\u008D\u008A\u008B\u00AE\u00B2\u008F\u0090\u009A" +
-            "\u009B\u009C\u009D\u009E\u009F\u00AA\u00AB\u00AC" +
-            "\u00AD\u008C\u008E\u0080\u00B6\u00B3\u00B5\u00B7" +
-            "\u00B1\u00B0\u00B4\u0076\u00A0\u0000\u0044\u0042" +
-            "\u0043\u0045\u0046\u0047\u0048\u0049\u0051\u0052" +
-            "\u0053\u0054\u0000\u0055\u0056\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0058\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 174, 174, 174, 429, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 663, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1026.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1026
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1026() {
-        super("IBM1026", ExtendedCharsets.aliasesFor("IBM1026"));
-    }
-
-    public String historicalName() {
-        return "Cp1026";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1026);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u007D\u0060\u00A6\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u00F6\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u005D\u0024\u0040\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u00E7\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u007E\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u011F\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\\\u00F9\u00FA\u00FF" +    // 0xD8 - 0xDF
-            "\u00FC\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +        // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u0023\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\"\u00D9\u00DA\u009F" +    // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\u007B\u00F1\u00C7\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u011E\u0130\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u005B\u00D1\u015F\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u0131\u003A\u00D6\u015E\'\u003D\u00DC";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u00FC\u00EC\u00AD\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00AE\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0068\u00DC\u00AC\u005F\u006D" +
-            "\u008D\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0048\u00BB\u008C\u00CC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u008E\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u004A" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u0000\u0069\u00ED\u00EE\u00EB\u00EF\u007B\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u007F\u0000\u0000\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u00C0" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u0000\u0049\u00CD\u00CE\u00CB\u00CF\u00A1\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00E0\u0000\u0000\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u005A\u00D0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u005B\u0079\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u007C\u006A" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-            352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1046.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,335 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1046
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1046() {
-        super("x-IBM1046", ExtendedCharsets.aliasesFor("x-IBM1046"));
-    }
-
-    public String historicalName() {
-        return "Cp1046";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1046);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71" +        // 0x80 - 0x87
-            "\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518" +        // 0x88 - 0x8F
-            "\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3" +        // 0x90 - 0x97
-            "\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC" +        // 0x98 - 0x9F
-            "\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91" +        // 0xA0 - 0xA7
-            "\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3" +        // 0xA8 - 0xAF
-            "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667" +        // 0xB0 - 0xB7
-            "\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F" +        // 0xB8 - 0xBF
-            "\uFECB\uFE80\uFE81\uFE83\uFE85\uFE87\uFE89\uFE8D" +        // 0xC0 - 0xC7
-            "\uFE8F\uFE93\uFE95\uFE99\uFE9D\uFEA1\uFEA5\uFEA9" +        // 0xC8 - 0xCF
-            "\uFEAB\uFEAD\uFEAF\uFEB1\uFEB5\uFEB9\uFEBD\uFEC3" +        // 0xD0 - 0xD7
-            "\uFEC7\uFEC9\uFECD\uFECC\uFE82\uFE84\uFE8E\uFED3" +        // 0xD8 - 0xDF
-            "\u0640\uFED1\uFED5\uFED9\uFEDD\uFEE1\uFEE5\uFEEB" +        // 0xE0 - 0xE7
-            "\uFEED\uFEEF\uFEF1\uFE70\uFE72\uFE74\uFE76\uFE78" +        // 0xE8 - 0xEF
-            "\uFE7A\uFE7C\uFE7E\uFED7\uFEDB\uFEDF\uF8FC\uFEF5" +        // 0xF0 - 0xF7
-            "\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0088\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u0000\u0000\u00A4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0081" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0082" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AC\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BB" +
-            "\u0000\u0000\u0000\u00BF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00E0\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00B0\u00B1\u00B2\u00B3" +
-            "\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u008B\u0000\u008A\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u008D\u0000\u0000\u0000\u008C\u0000\u0000\u0000" +
-            "\u008E\u0000\u0000\u0000\u008F\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0089\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0085\u0084\u0083\u0086\u00A3\u00A2\u00A1" +
-            "\u00A5\u00F6\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00EB\u0087\u00EC\u0000\u00ED\u0000" +
-            "\u00EE\u0094\u00EF\u0090\u00F0\u0091\u00F1\u0092" +
-            "\u00F2\u0093\u00C1\u00C2\u00DC\u00C3\u00DD\u00C4" +
-            "\u0000\u00C5\u0080\u00C6\u0095\u00A6\u0000\u00C7" +
-            "\u00DE\u00C8\u0000\u00A7\u0000\u00C9\u0000\u00CA" +
-            "\u0000\u00A8\u0000\u00CB\u0000\u00A9\u0000\u00CC" +
-            "\u0000\u00AA\u0000\u00CD\u0000\u00AB\u0000\u00CE" +
-            "\u0000\u00AE\u0000\u00CF\u0000\u00D0\u0000\u00D1" +
-            "\u0000\u00D2\u0000\u00D3\u0000\u00AF\u0000\u00D4" +
-            "\u0000\u00BA\u0000\u00D5\u0000\u00BC\u0000\u00D6" +
-            "\u0000\u00BD\u0000\u0000\u0000\u00D7\u0000\u0000" +
-            "\u0000\u00D8\u0000\u00D9\u00BE\u00C0\u00DB\u00DA" +
-            "\u0099\u009A\u009B\u00E1\u0000\u00DF\u0000\u00E2" +
-            "\u0000\u00F3\u0000\u00E3\u0000\u00F4\u0000\u00E4" +
-            "\u0000\u00F5\u0000\u00E5\u0000\u00FB\u0000\u00E6" +
-            "\u0000\u00FC\u0000\u00FE\u0000\u00E7\u00FD\u00E8" +
-            "\u0000\u00E9\u0096\u00EA\u0098\u0097\u0000\u00F7" +
-            "\u009C\u00F8\u009D\u00F9\u009E\u00FA\u009F\u0000" +
-            "\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 248, 248, 248, 248, 248, 492, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 748, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 909, 248, 248, 248, 248, 248, 1162, 248,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1047.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1047
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1047() {
-        super("IBM1047", ExtendedCharsets.aliasesFor("IBM1047"));
-    }
-
-    public String historicalName() {
-        return "Cp1047";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1047);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +     // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +     // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +     // 0x98 - 0x9F
-            "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +     // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u005B\u00DE\u00AE" +     // 0xA8 - 0xAF
-            "\u00AC\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" +     // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00DD\u00A8\u00AF\u005D\u00B4\u00D7" +     // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" +     // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +     // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" +     // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +     // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" +     // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +     // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +     // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0017\u001B" +     // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +     // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +     // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +     // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" +     // 0x40 - 0x47
-            "\u00E7\u00F1\u00A2\u002E\u003C\u0028\u002B\u007C" +     // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +     // 0x50 - 0x57
-            "\u00EC\u00DF\u0021\u0024\u002A\u0029\u003B\u005E" +     // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +     // 0x60 - 0x67
-            "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" +     // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +     // 0x70 - 0x77
-            "\u00CC\u0060\u003A\u0023\u0040\'\u003D\"";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00AD\u00E0\u00BD\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u004A\u00B1\u009F\u00B2\u006A\u00B5" +
-            "\u00BB\u00B4\u009A\u008A\u00B0\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00BA\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1097.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,342 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1097
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1097() {
-        super("x-IBM1097", ExtendedCharsets.aliasesFor("x-IBM1097"));
-    }
-
-    public String historicalName() {
-        return "Cp1097";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1097);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFB8A\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\uFEB1\uFEB3\uFEB5\uFEB7" +        // 0x88 - 0x8F
-            "\uFEB9\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\uFEBB\uFEBD\uFEBF\uFEC1\uFEC3\uFEC5" +        // 0x98 - 0x9F
-            "\uFEC7\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\uFEC9\uFECA\uFECB\uFECC\uFECD\uFECE" +        // 0xA8 - 0xAF
-            "\uFECF\uFED0\uFED1\uFED3\uFED5\uFED7\uFB8E\uFEDB" +        // 0xB0 - 0xB7
-            "\uFB92\uFB94\u005B\u005D\uFEDD\uFEDF\uFEE1\u00D7" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\uFEE3\uFEE5\uFEE7\uFEED\uFEE9" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\uFEEB\uFEEC\uFBA4\uFBFC\uFBFD\uFBFE" +        // 0xD8 - 0xDF
-            "\\\u061F\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u0640\u06F0\u06F1\u06F2\u06F3\u06F4" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u06F5\u06F6\u06F7\u06F8\u06F9\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\u0085\b\u0087" +    // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u060C\u064B\uFE81\uFE82\uF8FA\uFE8D" +        // 0x40 - 0x47
-            "\uFE8E\uF8FB\u00A4\u002E\u003C\u0028\u002B\u007C" +        // 0x48 - 0x4F
-            "\u0026\uFE80\uFE83\uFE84\uF8F9\uFE85\uFE8B\uFE8F" +        // 0x50 - 0x57
-            "\uFE91\uFB56\u0021\u0024\u002A\u0029\u003B\u00AC" +        // 0x58 - 0x5F
-            "\u002D\u002F\uFB58\uFE95\uFE97\uFE99\uFE9B\uFE9D" +        // 0x60 - 0x67
-            "\uFE9F\uFB7A\u061B\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\uFB7C\uFEA1\uFEA3\uFEA5\uFEA7\uFEA9\uFEAB\uFEAD" +        // 0x70 - 0x77
-            "\uFEAF\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u0000\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u0000\u0000\u0000\u004A\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008A\u005F\u00CA\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008B\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0042\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u006A" +
-            "\u0000\u0000\u0000\u00E1\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00EA\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0043" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00EB\u00EC\u00ED\u00EE" +
-            "\u00EF\u00FA\u00FB\u00FC\u00FD\u00FE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0054" +
-            "\u0046\u0049\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0059\u0000\u0062\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0069\u0000\u0070\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0000" +
-            "\u00B6\u0000\u0000\u0000\u00B8\u0000\u00B9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DD\u00DE" +
-            "\u00DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0051\u0044\u0045\u0052\u0053\u0055\u0000" +
-            "\u0000\u0000\u0000\u0000\u0056\u0000\u0047\u0048" +
-            "\u0057\u0000\u0058\u0000\u0000\u0000\u0063\u0000" +
-            "\u0064\u0000\u0065\u0000\u0066\u0000\u0067\u0000" +
-            "\u0068\u0000\u0071\u0000\u0072\u0000\u0073\u0000" +
-            "\u0074\u0000\u0075\u0000\u0076\u0000\u0077\u0000" +
-            "\u0078\u0000\u008C\u0000\u008D\u0000\u008E\u0000" +
-            "\u008F\u0000\u0090\u0000\u009A\u0000\u009B\u0000" +
-            "\u009C\u0000\u009D\u0000\u009E\u0000\u009F\u0000" +
-            "\u00A0\u0000\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u0000\u00B3\u0000\u00B4\u0000" +
-            "\u00B5\u0000\u0000\u0000\u00B7\u0000\u00BC\u0000" +
-            "\u00BD\u0000\u00BE\u0000\u00CB\u0000\u00CC\u0000" +
-            "\u00CD\u0000\u00CF\u0000\u00DA\u00DB\u00CE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000";
-
-    private final static short index1[] = {
-            0, 216, 216, 216, 216, 216, 460, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 710, 216, 216, 962, 216, 216, 1217, 216,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1098.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,362 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1098
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1098() {
-        super("x-IBM1098", ExtendedCharsets.aliasesFor("x-IBM1098"));
-    }
-
-    public String historicalName() {
-        return "Cp1098";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1098);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFFFD\uFFFD\u060C\u061B\u061F\u064B\uFE81\uFE82" +        // 0x80 - 0x87
-            "\uF8FA\uFE8D\uFE8E\uF8FB\uFE80\uFE83\uFE84\uF8F9" +        // 0x88 - 0x8F
-            "\uFE85\uFE8B\uFE8F\uFE91\uFB56\uFB58\uFE95\uFE97" +        // 0x90 - 0x97
-            "\uFE99\uFE9B\uFE9D\uFE9F\uFB7A\uFB7C\u00D7\uFEA1" +        // 0x98 - 0x9F
-            "\uFEA3\uFEA5\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFB8A" +        // 0xA0 - 0xA7
-            "\uFEB1\uFEB3\uFEB5\uFEB7\uFEB9\uFEBB\u00AB\u00BB" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\uFEBD\uFEBF\uFEC1" +        // 0xB0 - 0xB7
-            "\uFEC3\u2563\u2551\u2557\u255D\u00A4\uFEC5\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\uFEC7\uFEC9" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\uFFFD" +        // 0xC8 - 0xCF
-            "\uFECA\uFECB\uFECC\uFECD\uFECE\uFECF\uFED0\uFED1" +        // 0xD0 - 0xD7
-            "\uFED3\u2518\u250C\u2588\u2584\uFED5\uFED7\u2580" +        // 0xD8 - 0xDF
-            "\uFB8E\uFEDB\uFB92\uFB94\uFEDD\uFEDF\uFEE1\uFEE3" +        // 0xE0 - 0xE7
-            "\uFEE5\uFEE7\uFEED\uFEE9\uFEEB\uFEEC\uFBA4\uFBFC" +        // 0xE8 - 0xEF
-            "\u00AD\uFBFD\uFBFE\u0640\u06F0\u06F1\u06F2\u06F3" +        // 0xF0 - 0xF7
-            "\u06F4\u06F5\u06F6\u06F7\u06F8\u06F9\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AE\u0000\u00F0\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009E" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0082\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0083" +
-            "\u0000\u0000\u0000\u0084\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F3\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0085" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000\u0000" +
-            "\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000\u0000" +
-            "\u00C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00CD\u00BA\u0000\u0000" +
-            "\u00C9\u0000\u0000\u00BB\u0000\u0000\u00C8\u0000" +
-            "\u0000\u00BC\u0000\u0000\u00CC\u0000\u0000\u00B9" +
-            "\u0000\u0000\u00CB\u0000\u0000\u00CA\u0000\u0000" +
-            "\u00CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DF\u0000\u0000\u0000" +
-            "\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00B0\u00B1\u00B2" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00FE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u008F\u0088" +
-            "\u008B\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0094" +
-            "\u0000\u0095\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u009C\u0000\u009D\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00A7\u0000\u0000\u0000\u00E0" +
-            "\u0000\u0000\u0000\u00E2\u0000\u00E3\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00EE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00EF\u00F1\u00F2" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u008C\u0086\u0087\u008D\u008E\u0090\u0000\u0000" +
-            "\u0000\u0000\u0000\u0091\u0000\u0089\u008A\u0092" +
-            "\u0000\u0093\u0000\u0000\u0000\u0096\u0000\u0097" +
-            "\u0000\u0098\u0000\u0099\u0000\u009A\u0000\u009B" +
-            "\u0000\u009F\u0000\u00A0\u0000\u00A1\u0000\u00A2" +
-            "\u0000\u00A3\u0000\u00A4\u0000\u00A5\u0000\u00A6" +
-            "\u0000\u00A8\u0000\u00A9\u0000\u00AA\u0000\u00AB" +
-            "\u0000\u00AC\u0000\u00AD\u0000\u00B5\u0000\u00B6" +
-            "\u0000\u00B7\u0000\u00B8\u0000\u00BE\u0000\u00C6" +
-            "\u0000\u00C7\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5" +
-            "\u00D6\u00D7\u0000\u00D8\u0000\u00DD\u0000\u00DE" +
-            "\u0000\u0000\u0000\u00E1\u0000\u00E4\u0000\u00E5" +
-            "\u0000\u00E6\u0000\u00E7\u0000\u00E8\u0000\u00E9" +
-            "\u0000\u00EB\u0000\u00EC\u00ED\u00EA\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 216, 216, 216, 216, 216, 460, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 716, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-            216, 216, 216, 216, 216, 216, 216, 216, 877, 216, 216, 1129, 216, 216, 1384, 216,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1112.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1112
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1112() {
-        super("x-IBM1112", ExtendedCharsets.aliasesFor("x-IBM1112"));
-    }
-
-    public String historicalName() {
-        return "Cp1112";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1112);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u0101\u017C\u0144\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u0156\u0157\u00E6\u0137\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u201D\u017A\u0100\u017B\u0143\u00AE" +        // 0xA8 - 0xAF
-            "\u005E\u00A3\u012B\u00B7\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u005B\u005D\u0179\u0136\u013C\u00D7" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u014D\u00F6\u0146\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u0107\u00FC\u0142\u015B\u2019" +        // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u014C\u00D6\u0145\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u0106\u00DC\u0141\u015A\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u0161\u00E4\u0105\u012F\u016B\u00E5" +        // 0x40 - 0x47
-            "\u0113\u017E\u00A2\u002E\u003C\u0028\u002B\u007C" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u0119\u0117\u010D\u0173\u201E\u201C" +        // 0x50 - 0x57
-            "\u0123\u00DF\u0021\u0024\u002A\u0029\u003B\u00AC" +        // 0x58 - 0x5F
-            "\u002D\u002F\u0160\u00C4\u0104\u012E\u016A\u00C5" +        // 0x60 - 0x67
-            "\u0112\u017D\u00A6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u0118\u0116\u010C\u0172\u012A\u013B" +        // 0x70 - 0x77
-            "\u0122\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u00B0\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u0000\u004A\u00B1\u009F\u0000\u006A\u00B5" +
-            "\u0000\u00B4\u0000\u008A\u005F\u00CA\u00AF\u0000" +
-            "\u0090\u008F\u00EA\u00FA\u0000\u00A0\u00B6\u00B3" +
-            "\u0000\u00DA\u0000\u008B\u00B7\u00B8\u00B9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0063\u0067\u009E\u0000" +
-            "\u0000\u0071\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00EE\u0000\u00EF\u00EC\u00BF" +
-            "\u0080\u0000\u0000\u0000\u00FC\u0000\u0000\u0059" +
-            "\u0000\u0000\u0000\u0000\u0043\u0047\u009C\u0000" +
-            "\u0000\u0051\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00CE\u0000\u00CF\u00CC\u00E1" +
-            "\u0070\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" +
-            "\u00AC\u008C\u0000\u0000\u0064\u0044\u00FB\u00DB" +
-            "\u0000\u0000\u0000\u0000\u0074\u0054\u0000\u0000" +
-            "\u0000\u0000\u0068\u0048\u0000\u0000\u0073\u0053" +
-            "\u0072\u0052\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0078\u0058\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0076\u00B2\u0000\u0000\u0065\u0045" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00BD\u009D" +
-            "\u0000\u0000\u0000\u0077\u00BE\u0000\u0000\u0000" +
-            "\u0000\u00FD\u00DD\u00AE\u008E\u00ED\u00CD\u0000" +
-            "\u0000\u0000\u0000\u0000\u00EB\u00CB\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u009A\u009B" +
-            "\u0000\u0000\u00FE\u00DE\u0000\u0000\u0000\u0000" +
-            "\u0062\u0042\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0066\u0046\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0075\u0055\u0000\u0000\u0000\u0000" +
-            "\u0000\u00BC\u00AB\u00AD\u008D\u0069\u0049\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DF" +
-            "\u0000\u0000\u0057\u00AA\u0056\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            614, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1122.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,262 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1122
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1122() {
-        super("x-IBM1122", ExtendedCharsets.aliasesFor("x-IBM1122"));
-    }
-
-    public String historicalName() {
-        return "Cp1122";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1122);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u0161\u00FD\u017E\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u005D" +        // 0x98 - 0x9F
-            "\u00B5\u00FC\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u0160\u00DD\u017D\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u00A3\u00A5\u00B7\u00A9\u005B\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u203E\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u00E4\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00A6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u00E5\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u007E\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\u00C9\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +        // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u0040\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u007B\u00E0\u00E1\u00E3\u007D" +        // 0x40 - 0x47
-            "\u00E7\u00F1\u00A7\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u0060\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u00A4\u00C5\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u0023\u00C0\u00C1\u00C3\u0024" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00F6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\\\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +    // 0x70 - 0x77
-            "\u00CC\u00E9\u003A\u00C4\u00D6\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u0063\u0067\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00EC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00B5\u0071\u009F\u005F\u006D" +
-            "\u0051\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0043\u00BB\u0047\u00DC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u005A\u00B2\u00CC\u004A" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u0000" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u007B\u005B\u009E\u0068" +
-            "\u0074\u00E0\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u0000\u0069\u00ED\u00EE\u00EB\u00EF\u007C\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u0000\u0059" +
-            "\u0044\u0045\u0042\u0046\u00C0\u00D0\u009C\u0048" +
-            "\u0054\u0079\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u0000\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00A1\u008D\u0000\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AC\u008C\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00AE\u008E\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BC" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000";
-
-    private final static short index1[] = {
-            0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            577, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1123.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1123
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1123() {
-        super("x-IBM1123", ExtendedCharsets.aliasesFor("x-IBM1123"));
-    }
-
-    public String historicalName() {
-        return "Cp1123";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1123);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0446\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u0434\u0435\u0444\u0433\u0445\u0438" +        // 0x88 - 0x8F
-            "\u0439\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u043A\u043B\u043C\u043D\u043E\u043F" +        // 0x98 - 0x9F
-            "\u044F\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u0440\u0441\u0442\u0443\u0436\u0432" +        // 0xA8 - 0xAF
-            "\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A" +        // 0xB0 - 0xB7
-            "\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u0425\u0418\u0419\u041A\u041B\u041C" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u041D\u041E\u041F\u042F\u0420\u0421" +        // 0xD8 - 0xDF
-            "\\\u00A7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u0422\u0423\u0416\u0412\u042C\u042B" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u0417\u0428\u042D\u0429\u0427\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u0452\u0491\u0451\u0454\u0455\u0456" +        // 0x40 - 0x47
-            "\u0457\u0458\u005B\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u0459\u045A\u045B\u045C\u045E\u045F\u042A" +        // 0x50 - 0x57
-            "\u2116\u0402\u005D\u0024\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u0490\u0401\u0404\u0405\u0406\u0407" +        // 0x60 - 0x67
-            "\u0408\u0409\u007C\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u040A\u040B\u040C\u00AD\u040E\u040F\u044E\u0430" +        // 0x70 - 0x77
-            "\u0431\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u006A\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" +
-            "\u0000\u0000\u0000\u0000\u0000\u0073\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0063\u0059" +
-            "\u0000\u0064\u0065\u0066\u0067\u0068\u0069\u0070" +
-            "\u0071\u0072\u0000\u0074\u0075\u00B9\u00BA\u00ED" +
-            "\u00BF\u00BC\u00BD\u00EC\u00FA\u00CB\u00CC\u00CD" +
-            "\u00CE\u00CF\u00DA\u00DB\u00DC\u00DE\u00DF\u00EA" +
-            "\u00EB\u00BE\u00CA\u00BB\u00FE\u00FB\u00FD\u0057" +
-            "\u00EF\u00EE\u00FC\u00B8\u00DD\u0077\u0078\u00AF" +
-            "\u008D\u008A\u008B\u00AE\u00B2\u008F\u0090\u009A" +
-            "\u009B\u009C\u009D\u009E\u009F\u00AA\u00AB\u00AC" +
-            "\u00AD\u008C\u008E\u0080\u00B6\u00B3\u00B5\u00B7" +
-            "\u00B1\u00B0\u00B4\u0076\u00A0\u0000\u0044\u0042" +
-            "\u0000\u0045\u0046\u0047\u0048\u0049\u0051\u0052" +
-            "\u0053\u0054\u0000\u0055\u0056\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0062\u0043\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0058\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 174, 174, 174, 429, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 663, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1124.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1124
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1124() {
-        super("x-IBM1124", ExtendedCharsets.aliasesFor("x-IBM1124"));
-    }
-
-    public String historicalName() {
-        return "Cp1124";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1124);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +        // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +        // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +        // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +        // 0x98 - 0x9F
-            "\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407" +        // 0xA0 - 0xA7
-            "\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F" +        // 0xA8 - 0xAF
-            "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" +        // 0xB0 - 0xB7
-            "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" +        // 0xB8 - 0xBF
-            "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" +        // 0xC0 - 0xC7
-            "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" +        // 0xC8 - 0xCF
-            "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" +        // 0xD0 - 0xD7
-            "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" +        // 0xD8 - 0xDF
-            "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" +        // 0xE0 - 0xE7
-            "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" +        // 0xE8 - 0xEF
-            "\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457" +        // 0xF0 - 0xF7
-            "\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u00FD" +
-            "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A1\u00A2" +
-            "\u0000\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA" +
-            "\u00AB\u00AC\u0000\u00AE\u00AF\u00B0\u00B1\u00B2" +
-            "\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA" +
-            "\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2" +
-            "\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA" +
-            "\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2" +
-            "\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA" +
-            "\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2" +
-            "\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA" +
-            "\u00EB\u00EC\u00ED\u00EE\u00EF\u0000\u00F1\u00F2" +
-            "\u0000\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA" +
-            "\u00FB\u00FC\u0000\u00FE\u00FF\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A3\u00F3\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F0\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 174, 174, 174, 429, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 663, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1140.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1140
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1140() {
-        super("IBM01140", ExtendedCharsets.aliasesFor("IBM01140"));
-    }
-
-    public String historicalName() {
-        return "Cp1140";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1140);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM037.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-    private final static String index2 =
-
-        "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-        "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-        "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-        "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-        "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" +
-        "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-        "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-        "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-        "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-        "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-        "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-        "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u00B0\u006D" +
-        "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-        "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-        "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-        "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" +
-        "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-        "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-        "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-        "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-        "\u0041\u00AA\u004A\u00B1\u0000\u00B2\u006A\u00B5" +
-        "\u00BD\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00BC" +
-        "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-        "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-        "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-        "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-        "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-        "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-        "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-        "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-        "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-        "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-        "\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-    };
-
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1141.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1141
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1141() {
-        super("IBM01141", ExtendedCharsets.aliasesFor("IBM01141"));
-    }
-
-    public String historicalName() {
-        return "Cp1141";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1141);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-    private static class Decoder extends IBM273.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00B5\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0063\u00EC\u00FC\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0043\u00BB\u00DC\u0059\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u00CC\u007C" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u004A\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00E0\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u005A\u00AD\u00AE\u00A1" +
-            "\u0044\u0045\u0042\u0046\u00C0\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00D0\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1142.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1142
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1142() {
-        super("IBM01142", ExtendedCharsets.aliasesFor("IBM01142"));
-    }
-
-    public String historicalName() {
-        return "Cp1142";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1142);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM277.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x5A) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u004A\u0067\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u0080\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u009E\u00E0\u009F\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u009C\u00BB\u0047\u00DC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u0070\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u005B\u007B\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u007C\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u00D0\u00C0\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u006A\u00DD\u00DE\u00DB\u00A1\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u005A\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1143.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1143
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1143() {
-        super("IBM01143", ExtendedCharsets.aliasesFor("IBM01143"));
-    }
-
-    public String historicalName() {
-        return "Cp1143";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1143);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM278.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x5A) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u0063\u0067\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00EC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00B5\u0071\u009F\u005F\u006D" +
-            "\u0051\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0043\u00BB\u0047\u00DC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u00CC\u004A" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u007B\u005B\u009E\u0068" +
-            "\u0074\u00E0\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u007C\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u00C0\u00D0\u009C\u0048" +
-            "\u0054\u0079\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00A1\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u005A\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1144.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1144
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1144() {
-        super("IBM01144", ExtendedCharsets.aliasesFor("IBM01144"));
-    }
-
-    public String historicalName() {
-        return "Cp1144";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1144);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM280.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u00B1\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00B5\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0090\u0048\u0051\u005F\u006D" +
-            "\u00DD\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0044\u00BB\u0054\u0058\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u007B\u0000\u00B2\u00CD\u007C" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u004A\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u00C0\u0045\u0042\u0046\u0043\u0047\u009C\u00E0" +
-            "\u00D0\u005A\u0052\u0053\u00A1\u0055\u0056\u0057" +
-            "\u008C\u0049\u006A\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u0079\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1145.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1145
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1145() {
-        super("IBM01145", ExtendedCharsets.aliasesFor("IBM01145"));
-    }
-
-    public String historicalName() {
-        return "Cp1145";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1145);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM284.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u00BB\u007F\u0069\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u00BA\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00BD\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u0049\u00B5" +
-            "\u00A1\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u007B\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u006A\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1146.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1146
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1146() {
-        super("IBM01146", ExtendedCharsets.aliasesFor("IBM01146"));
-    }
-
-    public String historicalName() {
-        return "Cp1146";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1146);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM285.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u004A\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00B1\u00E0\u00BB\u00BA\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00BC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u005B\u0000\u00B2\u006A\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00A1" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1147.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1147
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1147() {
-        super("IBM01147", ExtendedCharsets.aliasesFor("IBM01147"));
-    }
-
-    public String historicalName() {
-        return "Cp1147";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1147);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM297.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u00B1\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u0044\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0090\u0048\u00B5\u005F\u006D" +
-            "\u00A0\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0051\u00BB\u0054\u00BD\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u007B\u0000\u00B2\u00DD\u005A" +
-            "\u00A1\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u004A\u008F\u00EA\u00FA\u00BE\u0079\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u007C\u0045\u0042\u0046\u0043\u0047\u009C\u00E0" +
-            "\u00D0\u00C0\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u006A\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1148.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1148
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1148() {
-        super("IBM01148", ExtendedCharsets.aliasesFor("IBM01148"));
-    }
-
-    public String historicalName() {
-        return "Cp1148";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1148);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM500.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u00BB\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u006A\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM1149.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM1149
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM1149() {
-        super("IBM01149", ExtendedCharsets.aliasesFor("IBM01149"));
-    }
-
-    public String historicalName() {
-        return "Cp1149";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM1149);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-    }
-
-    private static class Decoder extends IBM871.Decoder {
-            public Decoder(Charset cs) {
-                super(cs);
-            }
-
-            public char decode(int byteIndex) {
-                return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex);
-            }
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00AC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00AE\u00BE\u009E\u00EC\u006D" +
-            "\u008C\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u008E\u00BB\u009C\u00CC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u006A\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00E0\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u005A\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u007C\u0069\u00ED\u00EE\u00EB\u00EF\u005F\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u004A\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u00D0\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u0079\u0049\u00CD\u00CE\u00CB\u00CF\u00A1\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u00C0\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM273.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM273
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM273() {
-        super("IBM273", ExtendedCharsets.aliasesFor("IBM273"));
-    }
-
-    public String historicalName() {
-        return "Cp273";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM273);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u00DF\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u00A3\u00A5\u00B7\u00A9\u0040\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u00E4\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00A6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u00FC\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u007D\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\u00D6\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +        // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\\\u00D2\u00D3\u00D5" +    // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u005D\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u007B\u00E0\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\u00E7\u00F1\u00C4\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u007E\u00DC\u0024\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u005B\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00F6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u0060\u003A\u0023\u00A7\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00B5\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0063\u00EC\u00FC\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0043\u00BB\u00DC\u0059\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u00CC\u007C" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u004A\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00E0\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u005A\u00AD\u00AE\u00A1" +
-            "\u0044\u0045\u0042\u0046\u00C0\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00D0\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM277.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM277
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM277() {
-        super("IBM277", ExtendedCharsets.aliasesFor("IBM277"));
-    }
-
-    public String historicalName() {
-        return "Cp277";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM277);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0040\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u007B\u00B8\u005B\u005D" +        // 0x98 - 0x9F
-            "\u00B5\u00FC\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u00E6\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u00E5\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u007E\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u007D" +        // 0x40 - 0x47
-            "\u00E7\u00F1\u0023\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u00A4\u00C5\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u0024" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00F8\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00A6\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u0060\u003A\u00C6\u00D8\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u004A\u0067\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u0080\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u009E\u00E0\u009F\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u009C\u00BB\u0047\u00DC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u005A\u00B2\u0070\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u005B\u007B\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u007C\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u00D0\u00C0\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u006A\u00DD\u00DE\u00DB\u00A1\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM278.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM278
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM278() {
-        super("IBM278", ExtendedCharsets.aliasesFor("IBM278"));
-    }
-
-    public String historicalName() {
-        return "Cp278";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM278);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u005D" +        // 0x98 - 0x9F
-            "\u00B5\u00FC\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u00A3\u00A5\u00B7\u00A9\u005B\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u00E4\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00A6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u00E5\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u007E\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\u00C9\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +        // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u0040\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u007B\u00E0\u00E1\u00E3\u007D" +        // 0x40 - 0x47
-            "\u00E7\u00F1\u00A7\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u0060\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u00A4\u00C5\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u0023\u00C0\u00C1\u00C3\u0024" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00F6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\\\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +    // 0x70 - 0x77
-            "\u00CC\u00E9\u003A\u00C4\u00D6\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u0063\u0067\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00EC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00B5\u0071\u009F\u005F\u006D" +
-            "\u0051\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0043\u00BB\u0047\u00DC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u005A\u00B2\u00CC\u004A" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u007B\u005B\u009E\u0068" +
-            "\u0074\u00E0\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u007C\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u00C0\u00D0\u009C\u0048" +
-            "\u0054\u0079\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00A1\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM280.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM280
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM280() {
-        super("IBM280", ExtendedCharsets.aliasesFor("IBM280"));
-    }
-
-    public String historicalName() {
-        return "Cp280";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM280);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u005B\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u00EC\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u0023\u00A5\u00B7\u00A9\u0040\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u00E0\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u00A6\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u00E8\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u00FC\u0060\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\u00E7\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +        // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u007B\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\\\u00F1\u00B0\u002E\u003C\u0028\u002B\u0021" +    // 0x48 - 0x4F
-            "\u0026\u005D\u00EA\u00EB\u007D\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u007E\u00DF\u00E9\u0024\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00F2\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u00F9\u003A\u00A3\u00A7\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u00B1\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00B5\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0090\u0048\u0051\u005F\u006D" +
-            "\u00DD\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0044\u00BB\u0054\u0058\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u007B\u009F\u00B2\u00CD\u007C" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u004A\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u00C0\u0045\u0042\u0046\u0043\u0047\u009C\u00E0" +
-            "\u00D0\u005A\u0052\u0053\u00A1\u0055\u0056\u0057" +
-            "\u008C\u0049\u006A\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u0079\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM284.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM284
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM284() {
-        super("IBM284", ExtendedCharsets.aliasesFor("IBM284"));
-    }
-
-    public String historicalName() {
-        return "Cp284";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM284);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u00A8\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u005E\u0021\u00AF\u007E\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\u00E7\u00A6\u005B\u002E\u003C\u0028\u002B\u007C" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u005D\u0024\u002A\u0029\u003B\u00AC" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u00C7\u0023\u00F1\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u0060\u003A\u00D1\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u00BB\u007F\u0069\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u00BA\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00BD\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u0049\u00B5" +
-            "\u00A1\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u007B\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u006A\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM285.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM285
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM285() {
-        super("IBM285", ExtendedCharsets.aliasesFor("IBM285"));
-    }
-
-    public String historicalName() {
-        return "Cp285";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM285);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u00AF\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u005B\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u005E\u005D\u007E\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\u00E7\u00F1\u0024\u002E\u003C\u0028\u002B\u007C" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u0021\u00A3\u002A\u0029\u003B\u00AC" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u004A\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00B1\u00E0\u00BB\u00BA\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00BC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u005B\u009F\u00B2\u006A\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00A1" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM297.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM297
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM297() {
-        super("IBM297", ExtendedCharsets.aliasesFor("IBM297"));
-    }
-
-    public String historicalName() {
-        return "Cp297";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM297);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u005B\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u0060\u00A8\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u0023\u00A5\u00B7\u00A9\u005D\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u00AF\u007E\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u00E9\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u00E8\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u00FC\u00A6\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\u00E7\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +        // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u0040\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\\\u00F1\u00B0\u002E\u003C\u0028\u002B\u0021" +    // 0x48 - 0x4F
-            "\u0026\u007B\u00EA\u00EB\u007D\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u00A7\u0024\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00F9\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u00B5\u003A\u00A3\u00E0\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u00B1\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u0044\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0090\u0048\u00B5\u005F\u006D" +
-            "\u00A0\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0051\u00BB\u0054\u00BD\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u007B\u009F\u00B2\u00DD\u005A" +
-            "\u00A1\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u004A\u008F\u00EA\u00FA\u00BE\u0079\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u007C\u0045\u0042\u0046\u0043\u0047\u009C\u00E0" +
-            "\u00D0\u00C0\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u006A\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM420.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM420
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM420() {
-        super("IBM420", ExtendedCharsets.aliasesFor("IBM420"));
-    }
-
-    public String historicalName() {
-        return "Cp420";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM420);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uF8F5\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\uFEB7\uF8F4\uFEBB\uF8F7\uFEBF\uFEC3" +        // 0x88 - 0x8F
-            "\uFEC7\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\uFEC9\uFECA\uFECB\uFECC\uFECD\uFECE" +        // 0x98 - 0x9F
-            "\uFECF\u00F7\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\uFED0\uFED1\uFED3\uFED5\uFED7\uFED9" +        // 0xA8 - 0xAF
-            "\uFEDB\uFEDD\uFEF5\uFEF6\uFEF7\uFEF8\uFFFD\uFFFD" +        // 0xB0 - 0xB7
-            "\uFEFB\uFEFC\uFEDF\uFEE1\uFEE3\uFEE5\uFEE7\uFEE9" +        // 0xB8 - 0xBF
-            "\u061B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\uFEEB\uFFFD\uFEEC\uFFFD\uFEED" +        // 0xC8 - 0xCF
-            "\u061F\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\uFEEF\uFEF0\uFEF1\uFEF2\uFEF3\u0660" +        // 0xD8 - 0xDF
-            "\u00D7\u2007\u0053\u0054\u0055\u0056\u0057\u0058" +        // 0xE0 - 0xE7
-            "\u0059\u005A\u0661\u0662\uFFFD\u0663\u0664\u0665" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\uFFFD\u0666\u0667\u0668\u0669\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\uFE7C\uFE7D\u0640\uF8FC\uFE80\uFE81" +        // 0x40 - 0x47
-            "\uFE82\uFE83\u00A2\u002E\u003C\u0028\u002B\u007C" +        // 0x48 - 0x4F
-            "\u0026\uFE84\uFE85\uFFFD\uFFFD\uFE8B\uFE8D\uFE8E" +        // 0x50 - 0x57
-            "\uFE8F\uFE91\u0021\u0024\u002A\u0029\u003B\u00AC" +        // 0x58 - 0x5F
-            "\u002D\u002F\uFE93\uFE95\uFE97\uFE99\uFE9B\uFE9D" +        // 0x60 - 0x67
-            "\uFE9F\uFEA1\u00A6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\uFEA3\uFEA5\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uF8F6" +        // 0x70 - 0x77
-            "\uFEB3\u060C\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0000\u0000\u0000\u0000\u006D" +
-            "\u0000\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u0000\u004F\u0000\u0000\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u0000\u004A\u0000\u0000\u0000\u006A\u0000" +
-            "\u0000\u0000\u0000\u0000\u005F\u00CA\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00A1" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0079\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C0" +
-            "\u0000\u0000\u0000\u00D0\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0044\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DF\u00EA\u00EB\u00ED" +
-            "\u00EE\u00EF\u00FB\u00FC\u00FD\u00FE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00E1\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u008B\u0080\u0077" +
-            "\u008D\u0000\u0000\u0000\u0000\u0045\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0042\u0043\u0000\u0000\u0046\u0047" +
-            "\u0048\u0049\u0051\u0052\u0000\u0000\u0000\u0000" +
-            "\u0000\u0055\u0000\u0056\u0057\u0058\u0000\u0059" +
-            "\u0000\u0062\u0000\u0063\u0000\u0064\u0000\u0065" +
-            "\u0000\u0066\u0000\u0067\u0000\u0068\u0000\u0069" +
-            "\u0000\u0070\u0000\u0071\u0000\u0072\u0000\u0073" +
-            "\u0000\u0074\u0000\u0075\u0000\u0076\u0000\u0000" +
-            "\u0000\u0078\u0000\u0000\u0000\u008A\u0000\u0000" +
-            "\u0000\u008C\u0000\u0000\u0000\u008E\u0000\u0000" +
-            "\u0000\u008F\u0000\u0000\u0000\u0090\u0000\u009A" +
-            "\u009B\u009C\u009D\u009E\u009F\u00A0\u00AA\u00AB" +
-            "\u0000\u00AC\u0000\u00AD\u0000\u00AE\u0000\u00AF" +
-            "\u0000\u00B0\u0000\u00B1\u0000\u00BA\u0000\u00BB" +
-            "\u0000\u00BC\u0000\u00BD\u0000\u00BE\u0000\u00BF" +
-            "\u0000\u00CB\u00CD\u00CF\u0000\u00DA\u00DB\u00DC" +
-            "\u00DD\u00DE\u0000\u00B2\u00B3\u00B4\u00B5\u0000" +
-            "\u0000\u00B8\u00B9\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 248, 248, 248, 248, 248, 492, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            741, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 753, 248, 248, 248, 248, 248, 1006, 248,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM424.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,256 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM424
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM424() {
-        super("IBM424", ExtendedCharsets.aliasesFor("IBM424"));
-    }
-
-    public String historicalName() {
-        return "Cp424";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM424);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFFFD\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\uFFFD\uFFFD\uFFFD\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\uFFFD\uFFFD\uFFFD\u00B8\uFFFD\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE" +        // 0xA8 - 0xAF
-            "\u005E\u00A3\u00A5\u2022\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u005B\u005D\u203E\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\uFFFD\uFFFD\uFFFD\uFFFD\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6" +        // 0x40 - 0x47
-            "\u05D7\u05D8\u00A2\u002E\u003C\u0028\u002B\u007C" +        // 0x48 - 0x4F
-            "\u0026\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" +        // 0x50 - 0x57
-            "\u05E0\u05E1\u0021\u0024\u002A\u0029\u003B\u00AC" +        // 0x58 - 0x5F
-            "\u002D\u002F\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" +        // 0x60 - 0x67
-            "\u05E8\u05E9\u00A6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\uFFFD\u05EA\uFFFD\uFFFD\u00A0\uFFFD\uFFFD\uFFFD" +        // 0x70 - 0x77
-            "\u2017\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u00B0\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0074\u0000\u004A\u00B1\u009F\u00B2\u006A\u00B5" +
-            "\u00BD\u00B4\u0000\u008A\u005F\u00CA\u00AF\u0000" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u0000" +
-            "\u009D\u00DA\u0000\u008B\u00B7\u00B8\u00B9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048" +
-            "\u0049\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u0071\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0078\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00B3\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00BC\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 248, 248, 248, 248, 296, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            531, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM500.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM500
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM500() {
-        super("IBM500", ExtendedCharsets.aliasesFor("IBM500"));
-    }
-
-    public String historicalName() {
-        return "Cp500";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM500);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\u00E7\u00F1\u005B\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u005D\u0024\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u00BB\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u006A\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM838.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM838
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM838() {
-        super("IBM-Thai", ExtendedCharsets.aliasesFor("IBM-Thai"));
-    }
-
-    public String historicalName() {
-        return "Cp838";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM838);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0E4F\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22" +        // 0x88 - 0x8F
-            "\u0E5A\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28" +        // 0x98 - 0x9F
-            "\u0E5B\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E" +        // 0xA8 - 0xAF
-            "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" +        // 0xB0 - 0xB7
-            "\u0E58\u0E59\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u0E49\u0E35\u0E36\u0E37\u0E38\u0E39" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u0E3A\u0E40\u0E41\u0E42\u0E43\u0E44" +        // 0xD8 - 0xDF
-            "\\\u0E4A\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u0E4B\u0E4C\u0E4D\u0E4B\u0E4C\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06" +        // 0x40 - 0x47
-            "\u0E07\u005B\u00A2\u002E\u003C\u0028\u002B\u007C" +        // 0x48 - 0x4F
-            "\u0026\u0E48\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D" +        // 0x50 - 0x57
-            "\u0E0E\u005D\u0021\u0024\u002A\u0029\u003B\u00AC" +        // 0x58 - 0x5F
-            "\u002D\u002F\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14" +        // 0x60 - 0x67
-            "\u0E15\u005E\u00A6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u0E3F\u0E4E\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B" +        // 0x70 - 0x77
-            "\u0E1C\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u0049\u00E0\u0059\u0069\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u0000\u004A\u0000\u0000\u0000\u006A\u0000" +
-            "\u0000\u0000\u0000\u0000\u005F\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0042\u0043\u0044" +
-            "\u0045\u0046\u0047\u0048\u0052\u0053\u0054\u0055" +
-            "\u0056\u0057\u0058\u0062\u0063\u0064\u0065\u0066" +
-            "\u0067\u0068\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u008A\u008B\u008C\u008D\u008E\u008F\u009A" +
-            "\u009B\u009C\u009D\u009E\u009F\u00AA\u00AB\u00AC" +
-            "\u00AD\u00AE\u00AF\u00BA\u00BB\u00BC\u00BD\u00BE" +
-            "\u00BF\u00CB\u00CC\u00CD\u00CE\u00CF\u00DA\u0000" +
-            "\u0000\u0000\u0000\u0070\u00DB\u00DC\u00DD\u00DE" +
-            "\u00DF\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00FA" +
-            "\u00FB\u00FC\u0071\u0080\u00B0\u00B1\u00B2\u00B3" +
-            "\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u0090\u00A0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 428, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-            173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM856.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,288 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM856
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM856() {
-        super("x-IBM856", ExtendedCharsets.aliasesFor("x-IBM856"));
-    }
-
-    public String historicalName() {
-        return "Cp856";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM856);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" +     // 0x80 - 0x87
-            "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" +     // 0x88 - 0x8F
-            "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" +     // 0x90 - 0x97
-            "\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD" +     // 0x98 - 0x9F
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xA0 - 0xA7
-            "\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB" +     // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD" +     // 0xB0 - 0xB7
-            "\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510" +     // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD" +     // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4" +     // 0xC8 - 0xCF
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xD0 - 0xD7
-            "\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580" +     // 0xD8 - 0xDF
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD" +     // 0xE0 - 0xE7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u203E\u00B4" +     // 0xE8 - 0xEF
-            "\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8" +     // 0xF0 - 0xF7
-            "\u00B0\u00A8\u2022\u00B9\u00B3\u00B2\u25A0\u00A0" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u00BD\u009C\u00CF\u00BE\u00DD\u00F5" +
-            "\u00F9\u00B8\u0000\u00AE\u00AA\u00F0\u00A9\u0000" +
-            "\u00F8\u00F1\u00FD\u00FC\u00EF\u00E6\u00F4\u0000" +
-            "\u00F7\u00FB\u0000\u00AF\u00AC\u00AB\u00F3\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009E" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F6" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00F2\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FA\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00EE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00C4\u0000\u00B3\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DA" +
-            "\u0000\u0000\u0000\u00BF\u0000\u0000\u0000\u00C0" +
-            "\u0000\u0000\u0000\u00D9\u0000\u0000\u0000\u00C3" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B4" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C2" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C1" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C5" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00CD\u00BA\u0000\u0000\u00C9" +
-            "\u0000\u0000\u00BB\u0000\u0000\u00C8\u0000\u0000" +
-            "\u00BC\u0000\u0000\u00CC\u0000\u0000\u00B9\u0000" +
-            "\u0000\u00CB\u0000\u0000\u00CA\u0000\u0000\u00CE" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00DF\u0000\u0000\u0000\u00DC" +
-            "\u0000\u0000\u0000\u00DB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00B0\u00B1\u00B2\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00FE\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 248, 248, 248, 248, 296, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            531, 248, 248, 248, 248, 787, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM860.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,348 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM860
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM860() {
-        super("IBM860", ExtendedCharsets.aliasesFor("IBM860"));
-    }
-
-    public String historicalName() {
-        return "Cp860";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM860);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7" +     // 0x80 - 0x87
-            "\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2" +     // 0x88 - 0x8F
-            "\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9" +     // 0x90 - 0x97
-            "\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3" +     // 0x98 - 0x9F
-            "\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA" +     // 0xA0 - 0xA7
-            "\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB" +     // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" +     // 0xB0 - 0xB7
-            "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" +     // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" +     // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" +     // 0xC8 - 0xCF
-            "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" +     // 0xD0 - 0xD7
-            "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +     // 0xD8 - 0xDF
-            "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" +     // 0xE0 - 0xE7
-            "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" +     // 0xE8 - 0xEF
-            "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" +     // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u00AD\u009B\u009C\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A6\u00AE\u00AA\u0000\u0000\u0000" +
-            "\u00F8\u00F1\u00FD\u0000\u0000\u00E6\u0000\u00FA" +
-            "\u0000\u0000\u00A7\u00AF\u00AC\u00AB\u0000\u00A8" +
-            "\u0091\u0086\u008F\u008E\u0000\u0000\u0000\u0080" +
-            "\u0092\u0090\u0089\u0000\u0098\u008B\u0000\u0000" +
-            "\u0000\u00A5\u00A9\u009F\u008C\u0099\u0000\u0000" +
-            "\u0000\u009D\u0096\u0000\u009A\u0000\u0000\u00E1" +
-            "\u0085\u00A0\u0083\u0084\u0000\u0000\u0000\u0087" +
-            "\u008A\u0082\u0088\u0000\u008D\u00A1\u0000\u0000" +
-            "\u0000\u00A4\u0095\u00A2\u0093\u0094\u0000\u00F6" +
-            "\u0000\u0097\u00A3\u0000\u0081\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00E2\u0000\u0000" +
-            "\u0000\u0000\u00E9\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00E4\u0000\u0000" +
-            "\u00E8\u0000\u0000\u00EA\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E0\u0000\u0000\u00EB\u00EE" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00E3\u0000\u0000\u00E5\u00E7\u0000" +
-            "\u00ED\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009E\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F9\u00FB\u0000\u0000\u0000\u00EC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00EF\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F0\u0000\u0000\u00F3\u00F2\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00F4\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C4\u0000\u00B3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" +
-            "\u00BF\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u00C3\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C2\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C1\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CD\u00BA\u00D5\u00D6\u00C9\u00B8\u00B7\u00BB" +
-            "\u00D4\u00D3\u00C8\u00BE\u00BD\u00BC\u00C6\u00C7" +
-            "\u00CC\u00B5\u00B6\u00B9\u00D1\u00D2\u00CB\u00CF" +
-            "\u00D0\u00CA\u00D8\u00D7\u00CE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DF\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" +
-            "\u00DB\u0000\u0000\u0000\u00DD\u0000\u0000\u0000" +
-            "\u00DE\u00B0\u00B1\u00B2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 253, 253, 362, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            561, 253, 792, 1016, 253, 1272, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM861.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,369 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM861
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM861() {
-        super("IBM861", ExtendedCharsets.aliasesFor("IBM861"));
-    }
-
-    public String historicalName() {
-        return "Cp861";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM861);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7" +     // 0x80 - 0x87
-            "\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5" +     // 0x88 - 0x8F
-            "\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD" +     // 0x90 - 0x97
-            "\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192" +     // 0x98 - 0x9F
-            "\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA" +     // 0xA0 - 0xA7
-            "\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB" +     // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" +     // 0xB0 - 0xB7
-            "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" +     // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" +     // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" +     // 0xC8 - 0xCF
-            "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" +     // 0xD0 - 0xD7
-            "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +     // 0xD8 - 0xDF
-            "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" +     // 0xE0 - 0xE7
-            "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" +     // 0xE8 - 0xEF
-            "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" +     // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u00AD\u0000\u009C\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AE\u00AA\u0000\u0000\u0000" +
-            "\u00F8\u00F1\u00FD\u0000\u0000\u00E6\u0000\u00FA" +
-            "\u0000\u0000\u0000\u00AF\u00AC\u00AB\u0000\u00A8" +
-            "\u0000\u00A4\u0000\u0000\u008E\u008F\u0092\u0080" +
-            "\u0000\u0090\u0000\u0000\u0000\u00A5\u0000\u0000" +
-            "\u008B\u0000\u0000\u00A6\u0000\u0000\u0099\u0000" +
-            "\u009D\u0000\u00A7\u0000\u009A\u0097\u008D\u00E1" +
-            "\u0085\u00A0\u0083\u0000\u0084\u0086\u0091\u0087" +
-            "\u008A\u0082\u0088\u0089\u0000\u00A1\u0000\u0000" +
-            "\u008C\u0000\u0000\u00A2\u0093\u0000\u0094\u00F6" +
-            "\u009B\u0000\u00A3\u0096\u0081\u0098\u0095\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u009F\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00E2\u0000\u0000\u0000\u0000\u00E9" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00E4\u0000\u0000\u00E8\u0000\u0000" +
-            "\u00EA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E0\u0000\u0000\u00EB\u00EE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E3" +
-            "\u0000\u0000\u00E5\u00E7\u0000\u00ED\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FC\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u009E\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F9\u00FB" +
-            "\u0000\u0000\u0000\u00EC\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F0\u0000" +
-            "\u0000\u00F3\u00F2\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A9\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F4\u00F5\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000" +
-            "\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000" +
-            "\u0000\u00C3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B4\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C1\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA\u00D5" +
-            "\u00D6\u00C9\u00B8\u00B7\u00BB\u00D4\u00D3\u00C8" +
-            "\u00BE\u00BD\u00BC\u00C6\u00C7\u00CC\u00B5\u00B6" +
-            "\u00B9\u00D1\u00D2\u00CB\u00CF\u00D0\u00CA\u00D8" +
-            "\u00D7\u00CE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00DF\u0000\u0000" +
-            "\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000" +
-            "\u0000\u00DD\u0000\u0000\u0000\u00DE\u00B0\u00B1" +
-            "\u00B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 255, 402, 511, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            710, 402, 941, 1181, 402, 1437, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-            402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM863.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,373 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM863
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM863() {
-        super("IBM863", ExtendedCharsets.aliasesFor("IBM863"));
-    }
-
-    public String historicalName() {
-        return "Cp863";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM863);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7" +     // 0x80 - 0x87
-            "\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7" +     // 0x88 - 0x8F
-            "\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9" +     // 0x90 - 0x97
-            "\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192" +     // 0x98 - 0x9F
-            "\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF" +     // 0xA0 - 0xA7
-            "\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB" +     // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" +     // 0xB0 - 0xB7
-            "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" +     // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" +     // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" +     // 0xC8 - 0xCF
-            "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" +     // 0xD0 - 0xD7
-            "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +     // 0xD8 - 0xDF
-            "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" +     // 0xE0 - 0xE7
-            "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" +     // 0xE8 - 0xEF
-            "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" +     // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u009B\u009C\u0098\u0000\u00A0\u008F" +
-            "\u00A4\u0000\u0000\u00AE\u00AA\u0000\u0000\u00A7" +
-            "\u00F8\u00F1\u00FD\u00A6\u00A1\u00E6\u0086\u00FA" +
-            "\u00A5\u0000\u0000\u00AF\u00AC\u00AB\u00AD\u0000" +
-            "\u008E\u0000\u0084\u0000\u0000\u0000\u0000\u0080" +
-            "\u0091\u0090\u0092\u0094\u0000\u0000\u00A8\u0095" +
-            "\u0000\u0000\u0000\u0000\u0099\u0000\u0000\u0000" +
-            "\u0000\u009D\u0000\u009E\u009A\u0000\u0000\u00E1" +
-            "\u0085\u0000\u0083\u0000\u0000\u0000\u0000\u0087" +
-            "\u008A\u0082\u0088\u0089\u0000\u0000\u008C\u008B" +
-            "\u0000\u0000\u0000\u00A2\u0093\u0000\u0000\u00F6" +
-            "\u0000\u0097\u00A3\u0096\u0081\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E2\u0000\u0000\u0000\u0000\u00E9\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E4\u0000\u0000\u00E8\u0000\u0000\u00EA\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00E0\u0000" +
-            "\u0000\u00EB\u00EE\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00E3\u0000\u0000" +
-            "\u00E5\u00E7\u0000\u00ED\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u008D\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FC\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F9\u00FB" +
-            "\u0000\u0000\u0000\u00EC\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F0\u0000" +
-            "\u0000\u00F3\u00F2\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A9\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F4\u00F5\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000" +
-            "\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000" +
-            "\u0000\u00C3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B4\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C1\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA\u00D5" +
-            "\u00D6\u00C9\u00B8\u00B7\u00BB\u00D4\u00D3\u00C8" +
-            "\u00BE\u00BD\u00BC\u00C6\u00C7\u00CC\u00B5\u00B6" +
-            "\u00B9\u00D1\u00D2\u00CB\u00CF\u00D0\u00CA\u00D8" +
-            "\u00D7\u00CE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00DF\u0000\u0000" +
-            "\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000" +
-            "\u0000\u00DD\u0000\u0000\u0000\u00DE\u00B0\u00B1" +
-            "\u00B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 253, 400, 509, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            742, 400, 973, 1213, 400, 1469, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM864.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,342 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM864
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM864() {
-        super("IBM864", ExtendedCharsets.aliasesFor("IBM864"));
-    }
-
-    public String historicalName() {
-        return "Cp864";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM864);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C" +        // 0x80 - 0x87
-            "\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518" +        // 0x88 - 0x8F
-            "\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB" +        // 0x90 - 0x97
-            "\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD" +        // 0x98 - 0x9F
-            "\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD" +        // 0xA0 - 0xA7
-            "\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5" +        // 0xA8 - 0xAF
-            "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667" +        // 0xB0 - 0xB7
-            "\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F" +        // 0xB8 - 0xBF
-            "\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D" +        // 0xC0 - 0xC7
-            "\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9" +        // 0xC8 - 0xCF
-            "\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1" +        // 0xD0 - 0xD7
-            "\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9" +        // 0xD8 - 0xDF
-            "\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB" +        // 0xE0 - 0xE7
-            "\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1" +        // 0xE8 - 0xEF
-            "\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0" +        // 0xF0 - 0xF7
-            "\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u066A\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0000\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u00C0\u00A3\u00A4\u0000\u00DB\u0000" +
-            "\u0000\u0000\u0000\u0097\u00DC\u00A1\u0000\u0000" +
-            "\u0080\u0093\u0000\u0000\u0000\u0000\u0000\u0081" +
-            "\u0000\u0000\u0000\u0098\u0095\u0094\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DE" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DD" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0090\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0092\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00AC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00BB\u0000\u0000" +
-            "\u0000\u00BF\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00E0\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F1\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5" +
-            "\u00B6\u00B7\u00B8\u00B9\u0025\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0082\u0083\u0000\u0000\u0000\u0091" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0096\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0085\u0000\u0086\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u008D\u0000\u0000" +
-            "\u0000\u008C\u0000\u0000\u0000\u008E\u0000\u0000" +
-            "\u0000\u008F\u0000\u0000\u0000\u008A\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0088\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0089\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u008B\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0087\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0084\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00FE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F0" +
-            "\u0000\u0000\u00C1\u00C2\u00A2\u00C3\u00A5\u00C4" +
-            "\u0000\u0000\u0000\u0000\u0000\u00C6\u0000\u00C7" +
-            "\u00A8\u00A9\u0000\u00C8\u0000\u00C9\u0000\u00AA" +
-            "\u0000\u00CA\u0000\u00AB\u0000\u00CB\u0000\u00AD" +
-            "\u0000\u00CC\u0000\u00AE\u0000\u00CD\u0000\u00AF" +
-            "\u0000\u00CE\u0000\u00CF\u0000\u00D0\u0000\u00D1" +
-            "\u0000\u00D2\u0000\u00BC\u0000\u00D3\u0000\u00BD" +
-            "\u0000\u00D4\u0000\u00BE\u0000\u00D5\u0000\u00EB" +
-            "\u0000\u00D6\u0000\u00D7\u0000\u0000\u0000\u00D8" +
-            "\u0000\u0000\u0000\u00DF\u00C5\u00D9\u00EC\u00EE" +
-            "\u00ED\u00DA\u00F7\u00BA\u0000\u00E1\u0000\u00F8" +
-            "\u0000\u00E2\u0000\u00FC\u0000\u00E3\u0000\u00FB" +
-            "\u0000\u00E4\u0000\u00EF\u0000\u00E5\u0000\u00F2" +
-            "\u0000\u00E6\u0000\u00F3\u0000\u00E7\u00F4\u00E8" +
-            "\u0000\u00E9\u00F5\u00FD\u00F6\u00EA\u0000\u00F9" +
-            "\u00FA\u0099\u009A\u0000\u0000\u009D\u009E\u0000" +
-            "\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 248, 248, 326, 248, 248, 570, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 801, 248, 248, 1057, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 1218, 248,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM865.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,369 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM865
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM865() {
-        super("IBM865", ExtendedCharsets.aliasesFor("IBM865"));
-    }
-
-    public String historicalName() {
-        return "Cp865";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM865);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7" +     // 0x80 - 0x87
-            "\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5" +     // 0x88 - 0x8F
-            "\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9" +     // 0x90 - 0x97
-            "\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192" +     // 0x98 - 0x9F
-            "\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA" +     // 0xA0 - 0xA7
-            "\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4" +     // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" +     // 0xB0 - 0xB7
-            "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" +     // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" +     // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" +     // 0xC8 - 0xCF
-            "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" +     // 0xD0 - 0xD7
-            "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" +     // 0xD8 - 0xDF
-            "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" +     // 0xE0 - 0xE7
-            "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" +     // 0xE8 - 0xEF
-            "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" +     // 0xF0 - 0xF7
-            "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u00AD\u0000\u009C\u00AF\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A6\u00AE\u00AA\u0000\u0000\u0000" +
-            "\u00F8\u00F1\u00FD\u0000\u0000\u00E6\u0000\u00FA" +
-            "\u0000\u0000\u00A7\u0000\u00AC\u00AB\u0000\u00A8" +
-            "\u0000\u0000\u0000\u0000\u008E\u008F\u0092\u0080" +
-            "\u0000\u0090\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00A5\u0000\u0000\u0000\u0000\u0099\u0000" +
-            "\u009D\u0000\u0000\u0000\u009A\u0000\u0000\u00E1" +
-            "\u0085\u00A0\u0083\u0000\u0084\u0086\u0091\u0087" +
-            "\u008A\u0082\u0088\u0089\u008D\u00A1\u008C\u008B" +
-            "\u0000\u00A4\u0095\u00A2\u0093\u0000\u0094\u00F6" +
-            "\u009B\u0097\u00A3\u0096\u0081\u0000\u0000\u0098" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u009F\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E2\u0000\u0000\u0000\u0000" +
-            "\u00E9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E4\u0000\u0000\u00E8\u0000" +
-            "\u0000\u00EA\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00E0\u0000\u0000\u00EB\u00EE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E3\u0000\u0000\u00E5\u00E7\u0000\u00ED\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00FC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u009E\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F9" +
-            "\u00FB\u0000\u0000\u0000\u00EC\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00EF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F7\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F0" +
-            "\u0000\u0000\u00F3\u00F2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00A9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F4\u00F5" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00C4\u0000" +
-            "\u00B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000" +
-            "\u0000\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000" +
-            "\u0000\u0000\u00C3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00B4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C2\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C1\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C5\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA" +
-            "\u00D5\u00D6\u00C9\u00B8\u00B7\u00BB\u00D4\u00D3" +
-            "\u00C8\u00BE\u00BD\u00BC\u00C6\u00C7\u00CC\u00B5" +
-            "\u00B6\u00B9\u00D1\u00D2\u00CB\u00CF\u00D0\u00CA" +
-            "\u00D8\u00D7\u00CE\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DF\u0000" +
-            "\u0000\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000" +
-            "\u0000\u0000\u00DD\u0000\u0000\u0000\u00DE\u00B0" +
-            "\u00B1\u00B2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00FE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 403, 512, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            711, 403, 942, 1182, 403, 1438, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM868.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,359 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM868
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM868() {
-        super("IBM868", ExtendedCharsets.aliasesFor("IBM868"));
-    }
-
-    public String historicalName() {
-        return "Cp868";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM868);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7" +        // 0x80 - 0x87
-            "\u06F8\u06F9\u060C\u061B\u061F\uFE81\uFE8D\uFE8E" +        // 0x88 - 0x8F
-            "\uF8FB\uFE8F\uFE91\uFB56\uFB58\uFE93\uFE95\uFE97" +        // 0x90 - 0x97
-            "\uFB66\uFB68\uFE99\uFE9B\uFE9D\uFE9F\uFB7A\uFB7C" +        // 0x98 - 0x9F
-            "\uFEA1\uFEA3\uFEA5\uFEA7\uFEA9\uFB88\uFEAB\uFEAD" +        // 0xA0 - 0xA7
-            "\uFB8C\uFEAF\uFB8A\uFEB1\uFEB3\uFEB5\u00AB\u00BB" +        // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\uFEB7\uFEB9\uFEBB" +        // 0xB0 - 0xB7
-            "\uFEBD\u2563\u2551\u2557\u255D\uFEBF\uFEC3\u2510" +        // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\uFEC7\uFEC9" +        // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\uFECA" +        // 0xC8 - 0xCF
-            "\uFECB\uFECC\uFECD\uFECE\uFECF\uFED0\uFED1\uFED3" +        // 0xD0 - 0xD7
-            "\uFED5\u2518\u250C\u2588\u2584\uFED7\uFB8E\u2580" +        // 0xD8 - 0xDF
-            "\uFEDB\uFB92\uFB94\uFEDD\uFEDF\uFEE0\uFEE1\uFEE3" +        // 0xE0 - 0xE7
-            "\uFB9E\uFEE5\uFEE7\uFE85\uFEED\uFBA6\uFBA8\uFBA9" +        // 0xE8 - 0xEF
-            "\u00AD\uFBAA\uFE80\uFE89\uFE8A\uFE8B\uFBFC\uFBFD" +        // 0xF0 - 0xF7
-            "\uFBFE\uFBB0\uFBAE\uFE7C\uFE7D\uFFFD\u25A0\u00A0" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AE\u0000\u00F0\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u008A\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008B\u0000\u0000\u0000\u008C" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C4\u0000\u00B3\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" +
-            "\u00BF\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u00C3\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C2\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C1\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CD\u00BA\u0000\u0000\u00C9\u0000\u0000\u00BB" +
-            "\u0000\u0000\u00C8\u0000\u0000\u00BC\u0000\u0000" +
-            "\u00CC\u0000\u0000\u00B9\u0000\u0000\u00CB\u0000" +
-            "\u0000\u00CA\u0000\u0000\u00CE\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DF\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" +
-            "\u00DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B0\u00B1\u00B2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0090\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0093\u0000\u0094\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0098\u0000\u0099\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009E" +
-            "\u0000\u009F\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A5\u0000\u00AA" +
-            "\u0000\u00A8\u0000\u00DE\u0000\u0000\u0000\u00E1" +
-            "\u0000\u00E2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E8\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00ED\u0000\u00EE\u00EF\u00F1" +
-            "\u0000\u0000\u0000\u00FA\u0000\u00F9\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F6\u00F7\u00F8\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FB\u00FC\u0000\u0000\u00F2\u008D\u0000\u0000" +
-            "\u0000\u00EB\u0000\u0000\u0000\u00F3\u00F4\u00F5" +
-            "\u0000\u008E\u008F\u0091\u0000\u0092\u0000\u0095" +
-            "\u0000\u0096\u0000\u0097\u0000\u009A\u0000\u009B" +
-            "\u0000\u009C\u0000\u009D\u0000\u00A0\u0000\u00A1" +
-            "\u0000\u00A2\u0000\u00A3\u0000\u00A4\u0000\u00A6" +
-            "\u0000\u00A7\u0000\u00A9\u0000\u00AB\u0000\u00AC" +
-            "\u0000\u00AD\u0000\u00B5\u0000\u00B6\u0000\u00B7" +
-            "\u0000\u00B8\u0000\u00BD\u0000\u0000\u0000\u00BE" +
-            "\u0000\u0000\u0000\u00C6\u0000\u00C7\u00CF\u00D0" +
-            "\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u0000\u00D7" +
-            "\u0000\u00D8\u0000\u00DD\u0000\u0000\u0000\u00E0" +
-            "\u0000\u00E3\u0000\u00E4\u00E5\u00E6\u0000\u00E7" +
-            "\u0000\u00E9\u0000\u00EA\u0000\u0000\u0000\u0000" +
-            "\u0000\u00EC\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 188, 188, 188, 188, 188, 432, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 688, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 849, 188, 188, 1101, 188, 188, 1356, 188,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM869.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM869
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM869() {
-        super("IBM869", ExtendedCharsets.aliasesFor("IBM869"));
-    }
-
-    public String historicalName() {
-        return "Cp869";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM869);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD" +     // 0x80 - 0x87
-            "\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389" +     // 0x88 - 0x8F
-            "\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9" +     // 0x90 - 0x97
-            "\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF" +     // 0x98 - 0x9F
-            "\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394" +     // 0xA0 - 0xA7
-            "\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB" +     // 0xA8 - 0xAF
-            "\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C" +     // 0xB0 - 0xB7
-            "\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510" +     // 0xB8 - 0xBF
-            "\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1" +     // 0xC0 - 0xC7
-            "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3" +     // 0xC8 - 0xCF
-            "\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2" +     // 0xD0 - 0xD7
-            "\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580" +     // 0xD8 - 0xDF
-            "\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD" +     // 0xE0 - 0xE7
-            "\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384" +     // 0xE8 - 0xEF
-            "\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385" +     // 0xF0 - 0xF7
-            "\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0000\u009C\u0000\u0000\u008A\u00F5" +
-            "\u00F9\u0097\u0000\u00AE\u0089\u00F0\u0000\u0000" +
-            "\u00F8\u00F1\u0099\u009A\u0000\u0000\u0000\u0088" +
-            "\u0000\u0000\u0000\u00AF\u0000\u00AB\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u00F7" +
-            "\u0086\u0000\u008D\u008F\u0090\u0000\u0092\u0000" +
-            "\u0095\u0098\u00A1\u00A4\u00A5\u00A6\u00A7\u00A8" +
-            "\u00A9\u00AA\u00AC\u00AD\u00B5\u00B6\u00B7\u00B8" +
-            "\u00BD\u00BE\u00C6\u00C7\u0000\u00CF\u00D0\u00D1" +
-            "\u00D2\u00D3\u00D4\u00D5\u0091\u0096\u009B\u009D" +
-            "\u009E\u009F\u00FC\u00D6\u00D7\u00D8\u00DD\u00DE" +
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00ED\u00EC\u00EE\u00F2" +
-            "\u00F3\u00F4\u00F6\u00FA\u00A0\u00FB\u00A2\u00A3" +
-            "\u00FD\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u008E\u0000\u0000\u008B\u008C\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000" +
-            "\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000" +
-            "\u0000\u00C3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B4\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C2\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C1\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA\u0000" +
-            "\u0000\u00C9\u0000\u0000\u00BB\u0000\u0000\u00C8" +
-            "\u0000\u0000\u00BC\u0000\u0000\u00CC\u0000\u0000" +
-            "\u00B9\u0000\u0000\u00CB\u0000\u0000\u00CA\u0000" +
-            "\u0000\u00CE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00DF\u0000\u0000" +
-            "\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00B0\u00B1" +
-            "\u00B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 190, 190, 314, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            549, 190, 190, 190, 190, 805, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM870.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM870
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM870() {
-        super("IBM870", ExtendedCharsets.aliasesFor("IBM870"));
-    }
-
-    public String historicalName() {
-        return "Cp870";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM870);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u02D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u015B\u0148\u0111\u00FD\u0159\u015F" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u0142\u0144\u0161\u00B8\u02DB\u00A4" +        // 0x98 - 0x9F
-            "\u0105\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u015A\u0147\u0110\u00DD\u0158\u015E" +        // 0xA8 - 0xAF
-            "\u02D9\u0104\u017C\u0162\u017B\u00A7\u017E\u017A" +        // 0xB0 - 0xB7
-            "\u017D\u0179\u0141\u0143\u0160\u00A8\u00B4\u00D7" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u00F6\u0155\u00F3\u0151" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u011A\u0171\u00FC\u0165\u00FA\u011B" +        // 0xD8 - 0xDF
-            "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\u010F\u00D4\u00D6\u0154\u00D3\u0150" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u010E\u0170\u00DC\u0164\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u0163\u00E1\u0103\u010D" +        // 0x40 - 0x47
-            "\u00E7\u0107\u005B\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u0119\u00EB\u016F\u00ED\u00EE\u013E" +        // 0x50 - 0x57
-            "\u013A\u00DF\u005D\u0024\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u02DD\u00C1\u0102\u010C" +        // 0x60 - 0x67
-            "\u00C7\u0106\u007C\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u02C7\u00C9\u0118\u00CB\u016E\u00CD\u00CE\u013D" +        // 0x70 - 0x77
-            "\u0139\u0060\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u006A\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u0000\u0000\u0000\u009F\u0000\u0000\u00B5" +
-            "\u00BD\u0000\u0000\u0000\u0000\u00CA\u0000\u0000" +
-            "\u0090\u0000\u0000\u0000\u00BE\u0000\u0000\u0000" +
-            "\u009D\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0065\u0062\u0000\u0063\u0000\u0000\u0068" +
-            "\u0000\u0071\u0000\u0073\u0000\u0075\u0076\u0000" +
-            "\u0000\u0000\u0000\u00EE\u00EB\u0000\u00EC\u00BF" +
-            "\u0000\u0000\u00FE\u0000\u00FC\u00AD\u0000\u0059" +
-            "\u0000\u0045\u0042\u0000\u0043\u0000\u0000\u0048" +
-            "\u0000\u0051\u0000\u0053\u0000\u0055\u0056\u0000" +
-            "\u0000\u0000\u0000\u00CE\u00CB\u0000\u00CC\u00E1" +
-            "\u0000\u0000\u00DE\u0000\u00DC\u008D\u0000\u0000" +
-            "\u0066\u0046\u00B1\u00A0\u0069\u0049\u0000\u0000" +
-            "\u0000\u0000\u0067\u0047\u00FA\u00EA\u00AC\u008C" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0072\u0052" +
-            "\u00DA\u00DF\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0078" +
-            "\u0058\u0000\u0000\u0077\u0057\u0000\u0000\u00BA" +
-            "\u009A\u00BB\u009B\u0000\u0000\u00AB\u008B\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u00CF" +
-            "\u0000\u0000\u00ED\u00CD\u0000\u0000\u00AE\u008E" +
-            "\u00AA\u008A\u0000\u0000\u00AF\u008F\u00BC\u009C" +
-            "\u00B3\u0044\u00FD\u00DD\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0074\u0054\u00FB\u00DB" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B9" +
-            "\u00B7\u00B4\u00B2\u00B8\u00B6\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0070\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u00B0" +
-            "\u0000\u009E\u0000\u0064\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 254, 438, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-            381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM871.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM871
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM871() {
-        super("IBM871", ExtendedCharsets.aliasesFor("IBM871"));
-    }
-
-    public String historicalName() {
-        return "Cp871";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM871);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\u00AB\u00BB\u0060\u00FD\u007B\u00B1" +        // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\u00AA\u00BA\u007D\u00B8\u005D\u00A4" +        // 0x98 - 0x9F
-            "\u00B5\u00F6\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\u00A1\u00BF\u0040\u00DD\u005B\u00AE" +        // 0xA8 - 0xAF
-            "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" +        // 0xB0 - 0xB7
-            "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\\\u00D7" +    // 0xB8 - 0xBF
-            "\u00FE\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u00F4\u007E\u00F2\u00F3\u00F5" +        // 0xC8 - 0xCF
-            "\u00E6\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" +        // 0xD8 - 0xDF
-            "\u00B4\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" +        // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00D4\u005E\u00D2\u00D3\u00D5" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" +        // 0x40 - 0x47
-            "\u00E7\u00F1\u00DE\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" +        // 0x50 - 0x57
-            "\u00EC\u00DF\u00C6\u0024\u002A\u0029\u003B\u00D6" +        // 0x58 - 0x5F
-            "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" +        // 0x60 - 0x67
-            "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" +        // 0x70 - 0x77
-            "\u00CC\u00F0\u003A\u0023\u00D0\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u00AC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00AE\u00BE\u009E\u00EC\u006D" +
-            "\u008C\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u008E\u00BB\u009C\u00CC\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u006A\u00B5" +
-            "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" +
-            "\u0090\u008F\u00EA\u00FA\u00E0\u00A0\u00B6\u00B3" +
-            "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" +
-            "\u0064\u0065\u0062\u0066\u0063\u0067\u005A\u0068" +
-            "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" +
-            "\u007C\u0069\u00ED\u00EE\u00EB\u00EF\u005F\u00BF" +
-            "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u004A\u0059" +
-            "\u0044\u0045\u0042\u0046\u0043\u0047\u00D0\u0048" +
-            "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" +
-            "\u0079\u0049\u00CD\u00CE\u00CB\u00CF\u00A1\u00E1" +
-            "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u00C0\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-            256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM875.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM875
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM875() {
-        super("x-IBM875", ExtendedCharsets.aliasesFor("x-IBM875"));
-    }
-
-    public String historicalName() {
-        return "Cp875";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM875);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0385\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x80 - 0x87
-            "\u0068\u0069\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6" +     // 0x88 - 0x8F
-            "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +     // 0x90 - 0x97
-            "\u0071\u0072\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC" +     // 0x98 - 0x9F
-            "\u00B4\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +     // 0xA0 - 0xA7
-            "\u0079\u007A\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3" +     // 0xA8 - 0xAF
-            "\u00A3\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD" +     // 0xB0 - 0xB7
-            "\u03CB\u03CE\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8" +     // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\u03C9\u0390\u03B0\u2018\u2015" +     // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +     // 0xD0 - 0xD7
-            "\u0051\u0052\u00B1\u00BD\uFFFD\u0387\u2019\u00A6" +     // 0xD8 - 0xDF
-            "\\\uFFFD\u0053\u0054\u0055\u0056\u0057\u0058" +     // 0xE0 - 0xE7
-            "\u0059\u005A\u00B2\u00A7\uFFFD\uFFFD\u00AB\u00AC" +     // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0xF0 - 0xF7
-            "\u0038\u0039\u00B3\u00A9\uFFFD\uFFFD\u00BB\u009F" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +     // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +     // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +     // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +     // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +     // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +     // 0x38 - 0x3F
-            "\u0020\u0391\u0392\u0393\u0394\u0395\u0396\u0397" +     // 0x40 - 0x47
-            "\u0398\u0399\u005B\u002E\u003C\u0028\u002B\u0021" +     // 0x48 - 0x4F
-            "\u0026\u039A\u039B\u039C\u039D\u039E\u039F\u03A0" +     // 0x50 - 0x57
-            "\u03A1\u03A3\u005D\u0024\u002A\u0029\u003B\u005E" +     // 0x58 - 0x5F
-            "\u002D\u002F\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9" +     // 0x60 - 0x67
-            "\u03AA\u03AB\u007C\u002C\u0025\u005F\u003E\u003F" +     // 0x68 - 0x6F
-            "\u00A8\u0386\u0388\u0389\u00A0\u038A\u038C\u038E" +     // 0x70 - 0x77
-            "\u038F\u0060\u003A\u0023\u0040\'\u003D\"";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" +
-            "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u006A\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0074\u0000\u0000\u00B0\u0000\u0000\u00DF\u00EB" +
-            "\u0070\u00FB\u0000\u00EE\u00EF\u00CA\u0000\u0000" +
-            "\u0090\u00DA\u00EA\u00FA\u00A0\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00FE\u0000\u00DB\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0071" +
-            "\u00DD\u0072\u0073\u0075\u0000\u0076\u0000\u0077" +
-            "\u0078\u00CC\u0041\u0042\u0043\u0044\u0045\u0046" +
-            "\u0047\u0048\u0049\u0051\u0052\u0053\u0054\u0055" +
-            "\u0056\u0057\u0058\u0000\u0059\u0062\u0063\u0064" +
-            "\u0065\u0066\u0067\u0068\u0069\u00B1\u00B2\u00B3" +
-            "\u00B5\u00CD\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u009A\u009B\u009C\u009D\u009E\u009F\u00AA\u00AB" +
-            "\u00AC\u00AD\u00AE\u00BA\u00AF\u00BB\u00BC\u00BD" +
-            "\u00BE\u00BF\u00CB\u00B4\u00B8\u00B6\u00B7\u00B9" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00CF\u0000\u0000\u00CE\u00DE\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 190, 190, 313, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            548, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-            190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM918.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM918
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM918() {
-        super("IBM918", ExtendedCharsets.aliasesFor("IBM918"));
-    }
-
-    public String historicalName() {
-        return "Cp918";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM918);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFEA7\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x80 - 0x87
-            "\u0068\u0069\uFEA9\uFB88\uFEAB\uFEAD\uFB8C\uFEAF" +        // 0x88 - 0x8F
-            "\uFB8A\u006A\u006B\u006C\u006D\u006E\u006F\u0070" +        // 0x90 - 0x97
-            "\u0071\u0072\uFEB1\uFEB3\uFEB5\uFEB7\uFEB9\uFEBB" +        // 0x98 - 0x9F
-            "\uFEBD\u007E\u0073\u0074\u0075\u0076\u0077\u0078" +        // 0xA0 - 0xA7
-            "\u0079\u007A\uFEBF\uFEC3\uFEC7\uFEC9\uFECA\uFECB" +        // 0xA8 - 0xAF
-            "\uFECC\uFECD\uFECE\uFECF\uFED0\uFED1\uFED3\uFED5" +        // 0xB0 - 0xB7
-            "\uFED7\uFB8E\uFEDB\u007C\uFB92\uFB94\uFEDD\uFEDF" +        // 0xB8 - 0xBF
-            "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0xC0 - 0xC7
-            "\u0048\u0049\u00AD\uFEE0\uFEE1\uFEE3\uFB9E\uFEE5" +        // 0xC8 - 0xCF
-            "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" +        // 0xD0 - 0xD7
-            "\u0051\u0052\uFEE7\uFE85\uFEED\uFBA6\uFBA8\uFBA9" +        // 0xD8 - 0xDF
-            "\\\uFBAA\u0053\u0054\u0055\u0056\u0057\u0058" +    // 0xE0 - 0xE7
-            "\u0059\u005A\uFE80\uFE89\uFE8A\uFE8B\uFBFC\uFBFD" +        // 0xE8 - 0xEF
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0xF0 - 0xF7
-            "\u0038\u0039\uFBFE\uFBB0\uFBAE\uFE7C\uFE7D\u009F" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" +    // 0x00 - 0x07
-            "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" +        // 0x10 - 0x17
-            "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" +    // 0x20 - 0x27
-            "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" +        // 0x28 - 0x2F
-            "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" +        // 0x30 - 0x37
-            "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" +        // 0x38 - 0x3F
-            "\u0020\u00A0\u060C\u061B\u061F\uFE81\uFE8D\uFE8E" +        // 0x40 - 0x47
-            "\uF8FB\uFE8F\u005B\u002E\u003C\u0028\u002B\u0021" +        // 0x48 - 0x4F
-            "\u0026\uFE91\uFB56\uFB58\uFE93\uFE95\uFE97\uFB66" +        // 0x50 - 0x57
-            "\uFB68\uFE99\u005D\u0024\u002A\u0029\u003B\u005E" +        // 0x58 - 0x5F
-            "\u002D\u002F\uFE9B\uFE9D\uFE9F\uFB7A\uFB7C\uFEA1" +        // 0x60 - 0x67
-            "\uFEA3\uFEA5\u0060\u002C\u0025\u005F\u003E\u003F" +        // 0x68 - 0x6F
-            "\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7" +        // 0x70 - 0x77
-            "\u06F8\u06F9\u003A\u0023\u0040\'\u003D\"";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" +
-            "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" +
-            "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" +
-            "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" +
-            "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" +
-            "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" +
-            "\u006A\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" +
-            "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" +
-            "\u00A7\u00A8\u00A9\u00C0\u00BB\u00D0\u00A1\u0007" +
-            "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" +
-            "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" +
-            "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" +
-            "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" +
-            "\u0041\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00CA\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0042\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0043\u0000\u0000" +
-            "\u0000\u0044\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0070\u0071\u0072\u0073\u0074\u0075" +
-            "\u0076\u0077\u0078\u0079\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0048" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0052\u0000" +
-            "\u0053\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0057\u0000" +
-            "\u0058\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0065\u0000\u0066\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u008B\u0000\u0090\u0000\u008E\u0000\u00B9\u0000" +
-            "\u0000\u0000\u00BC\u0000\u00BD\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00CE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DD\u0000" +
-            "\u00DE\u00DF\u00E1\u0000\u0000\u0000\u00FC\u0000" +
-            "\u00FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00EE\u00EF\u00FA\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00FD\u00FE\u0000\u0000\u00EA" +
-            "\u0045\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" +
-            "\u00EB\u00EC\u00ED\u0000\u0046\u0047\u0049\u0000" +
-            "\u0051\u0000\u0054\u0000\u0055\u0000\u0056\u0000" +
-            "\u0059\u0000\u0062\u0000\u0063\u0000\u0064\u0000" +
-            "\u0067\u0000\u0068\u0000\u0069\u0000\u0080\u0000" +
-            "\u008A\u0000\u008C\u0000\u008D\u0000\u008F\u0000" +
-            "\u009A\u0000\u009B\u0000\u009C\u0000\u009D\u0000" +
-            "\u009E\u0000\u009F\u0000\u00A0\u0000\u00AA\u0000" +
-            "\u0000\u0000\u00AB\u0000\u0000\u0000\u00AC\u0000" +
-            "\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4" +
-            "\u00B5\u0000\u00B6\u0000\u00B7\u0000\u00B8\u0000" +
-            "\u0000\u0000\u00BA\u0000\u00BE\u0000\u00BF\u00CB" +
-            "\u00CC\u0000\u00CD\u0000\u00CF\u0000\u00DA\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 174, 174, 174, 174, 174, 418, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 668, 174, 174, 920, 174, 174, 1175, 174,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM921.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM921
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM921() {
-        super("x-IBM921", ExtendedCharsets.aliasesFor("x-IBM921"));
-    }
-
-    public String historicalName() {
-        return "Cp921";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM921);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +        // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +        // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +        // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +        // 0x98 - 0x9F
-            "\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7" +        // 0xA0 - 0xA7
-            "\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6" +        // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7" +        // 0xB0 - 0xB7
-            "\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6" +        // 0xB8 - 0xBF
-            "\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112" +        // 0xC0 - 0xC7
-            "\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B" +        // 0xC8 - 0xCF
-            "\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7" +        // 0xD0 - 0xD7
-            "\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF" +        // 0xD8 - 0xDF
-            "\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113" +        // 0xE0 - 0xE7
-            "\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C" +        // 0xE8 - 0xEF
-            "\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7" +        // 0xF0 - 0xF7
-            "\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u0000\u00A2\u00A3\u00A4\u0000\u00A6\u00A7" +
-            "\u0000\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u0000" +
-            "\u00B0\u00B1\u00B2\u00B3\u0000\u00B5\u00B6\u00B7" +
-            "\u0000\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C4\u00C5\u00AF\u0000" +
-            "\u0000\u00C9\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00D3\u0000\u00D5\u00D6\u00D7" +
-            "\u00A8\u0000\u0000\u0000\u00DC\u0000\u0000\u00DF" +
-            "\u0000\u0000\u0000\u0000\u00E4\u00E5\u00BF\u0000" +
-            "\u0000\u00E9\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F3\u0000\u00F5\u00F6\u00F7" +
-            "\u00B8\u0000\u0000\u0000\u00FC\u0000\u0000\u0000" +
-            "\u00C2\u00E2\u0000\u0000\u00C0\u00E0\u00C3\u00E3" +
-            "\u0000\u0000\u0000\u0000\u00C8\u00E8\u0000\u0000" +
-            "\u0000\u0000\u00C7\u00E7\u0000\u0000\u00CB\u00EB" +
-            "\u00C6\u00E6\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00CC\u00EC\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00CE\u00EE\u0000\u0000\u00C1\u00E1" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00CD\u00ED" +
-            "\u0000\u0000\u0000\u00CF\u00EF\u0000\u0000\u0000" +
-            "\u0000\u00D9\u00F9\u00D1\u00F1\u00D2\u00F2\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D4\u00F4\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00AA\u00BA" +
-            "\u0000\u0000\u00DA\u00FA\u0000\u0000\u0000\u0000" +
-            "\u00D0\u00F0\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00DB\u00FB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00D8\u00F8\u0000\u0000\u0000\u0000" +
-            "\u0000\u00CA\u00EA\u00DD\u00FD\u00DE\u00FE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00FF" +
-            "\u0000\u0000\u00B4\u00A1\u00A5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            614, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/IBM922.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,262 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM922
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM922() {
-        super("x-IBM922", ExtendedCharsets.aliasesFor("x-IBM922"));
-    }
-
-    public String historicalName() {
-        return "Cp922";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM922);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +        // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +        // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +        // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +        // 0x98 - 0x9F
-            "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +        // 0xA0 - 0xA7
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E" +        // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +        // 0xB0 - 0xB7
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +        // 0xB8 - 0xBF
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +        // 0xC0 - 0xC7
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +        // 0xC8 - 0xCF
-            "\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +        // 0xD0 - 0xD7
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF" +        // 0xD8 - 0xDF
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +        // 0xE0 - 0xE7
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +        // 0xE8 - 0xEF
-            "\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +        // 0xF0 - 0xF7
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u0000" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-            "\u0000\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0000\u00DF" +
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-            "\u0000\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0000\u00FF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D0\u00F0\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00DE\u00FE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000";
-
-    private final static short index1[] = {
-            0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            577, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/ISO_8859_11.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,215 +0,0 @@
-/*
- * Copyright 2003 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/*
- *
- * NIO charset Support for Latin/Thai x-ISO-8859-11 charset
- * (Currently not IANA registered)
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.SingleByteDecoder;
-
-public class ISO_8859_11 extends Charset
-{
-
-    public ISO_8859_11() {
-        super("x-iso-8859-11", ExtendedCharsets.aliasesFor("x-iso-8859-11"));
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_11));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-            "\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" +     // 0xA0 - 0xA7
-            "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" +     // 0xA8 - 0xAF
-            "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" +     // 0xB0 - 0xB7
-            "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" +     // 0xB8 - 0xBF
-            "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" +     // 0xC0 - 0xC7
-            "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" +     // 0xC8 - 0xCF
-            "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" +     // 0xD0 - 0xD7
-            "\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F" +     // 0xD8 - 0xDF
-            "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" +     // 0xE0 - 0xE7
-            "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F" +     // 0xE8 - 0xEF
-            "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" +     // 0xF0 - 0xF7
-            "\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    protected static class Encoder extends SingleByteEncoder {
-
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-            "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +
-            "\u00D8\u00D9\u00DA\u0000\u0000\u0000\u0000\u00DF" +
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u00FB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 416, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/ISO_8859_3.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class ISO_8859_3
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_3() {
-        super("ISO-8859-3", ExtendedCharsets.aliasesFor("ISO-8859-3"));
-    }
-
-    public String historicalName() {
-        return "ISO8859_3";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_3));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-            "\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7" +     // 0xA0 - 0xA7
-            "\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B" +     // 0xA8 - 0xAF
-            "\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7" +     // 0xB0 - 0xB7
-            "\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C" +     // 0xB8 - 0xBF
-            "\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7" +     // 0xC0 - 0xC7
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +     // 0xC8 - 0xCF
-            "\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7" +     // 0xD0 - 0xD7
-            "\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF" +     // 0xD8 - 0xDF
-            "\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7" +     // 0xE0 - 0xE7
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +     // 0xE8 - 0xEF
-            "\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7" +     // 0xF0 - 0xF7
-            "\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u0000\u0000\u00A3\u00A4\u0000\u0000\u00A7" +
-            "\u00A8\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" +
-            "\u00B0\u0000\u00B2\u00B3\u00B4\u00B5\u0000\u00B7" +
-            "\u00B8\u0000\u0000\u0000\u0000\u00BD\u0000\u0000" +
-            "\u00C0\u00C1\u00C2\u0000\u00C4\u0000\u0000\u00C7" +
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-            "\u0000\u00D1\u00D2\u00D3\u00D4\u0000\u00D6\u00D7" +
-            "\u0000\u00D9\u00DA\u00DB\u00DC\u0000\u0000\u00DF" +
-            "\u00E0\u00E1\u00E2\u0000\u00E4\u0000\u0000\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-            "\u0000\u00F1\u00F2\u00F3\u00F4\u0000\u00F6\u00F7" +
-            "\u0000\u00F9\u00FA\u00FB\u00FC\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00C6\u00E6\u00C5" +
-            "\u00E5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00D8\u00F8\u00AB\u00BB\u00D5\u00F5\u0000" +
-            "\u0000\u00A6\u00B6\u00A1\u00B1\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A9\u00B9\u0000" +
-            "\u0000\u00AC\u00BC\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DE\u00FE\u00AA\u00BA\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DD\u00FD\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AF\u00BF\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A2\u00FF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 253, 418, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-            378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/ISO_8859_6.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class ISO_8859_6
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_6() {
-        super("ISO-8859-6", ExtendedCharsets.aliasesFor("ISO-8859-6"));
-    }
-
-    public String historicalName() {
-        return "ISO8859_6";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_6));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-            "\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD" +     // 0xA0 - 0xA7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD" +     // 0xA8 - 0xAF
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xB0 - 0xB7
-            "\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F" +     // 0xB8 - 0xBF
-            "\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627" +     // 0xC0 - 0xC7
-            "\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F" +     // 0xC8 - 0xCF
-            "\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637" +     // 0xD0 - 0xD7
-            "\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xD8 - 0xDF
-            "\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647" +     // 0xE0 - 0xE7
-            "\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F" +     // 0xE8 - 0xEF
-            "\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xF0 - 0xF7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u0000\u0000\u0000\u00A4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00AC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00BB\u0000\u0000" +
-            "\u0000\u00BF\u0000\u00C1\u00C2\u00C3\u00C4\u00C5" +
-            "\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD" +
-            "\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5" +
-            "\u00D6\u00D7\u00D8\u00D9\u00DA\u0000\u0000\u0000" +
-            "\u0000\u0000\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" +
-            "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" +
-            "\u00EE\u00EF\u00F0\u00F1\u00F2\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 174, 174, 174, 174, 174, 418, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-            174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/ISO_8859_8.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,259 +0,0 @@
-
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-
-public class ISO_8859_8
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public ISO_8859_8() {
-        super("ISO-8859-8", ExtendedCharsets.aliasesFor("ISO-8859-8"));
-    }
-
-    public String historicalName() {
-        return "ISO8859_8";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof ISO_8859_8));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +     // 0x80 - 0x87
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +     // 0x88 - 0x8F
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +     // 0x90 - 0x97
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +     // 0x98 - 0x9F
-            "\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +     // 0xA0 - 0xA7
-            "\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF" +     // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-            "\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD" +     // 0xB8 - 0xBF
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xC0 - 0xC7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xC8 - 0xCF
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xD0 - 0xD7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017" +     // 0xD8 - 0xDF
-            "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" +     // 0xE0 - 0xE7
-            "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" +     // 0xE8 - 0xEF
-            "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" +     // 0xF0 - 0xF7
-            "\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-            "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" +
-            "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-            "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" +
-            "\u00A0\u0000\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FD\u00FE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DF\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000";
-        private final static short index1[] = {
-            0, 248, 248, 248, 248, 296, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            538, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-            248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MS1255.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,333 +0,0 @@
-
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-
-public class MS1255
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public String historicalName() {
-        return "Cp1255";
-    }
-
-    public MS1255() {
-        super("windows-1255", ExtendedCharsets.aliasesFor("windows-1255"));
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS1255));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return MS1255.Decoder.byteToCharTable;
-    }
-
-    public short[] getEncoderIndex1() {
-        return MS1255.Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return MS1255.Encoder.index2;
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021" +     // 0x80 - 0x87
-            "\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0x88 - 0x8F
-            "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +     // 0x90 - 0x97
-            "\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0x98 - 0x9F
-            "\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7" +     // 0xA0 - 0xA7
-            "\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF" +     // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-            "\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF" +     // 0xB8 - 0xBF
-            "\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7" +     // 0xC0 - 0xC7
-            "\u05B8\u05B9\uFFFD\u05BB\u05BC\u05BD\u05BE\u05BF" +     // 0xC8 - 0xCF
-            "\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3" +     // 0xD0 - 0xD7
-            "\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xD8 - 0xDF
-            "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" +     // 0xE0 - 0xE7
-            "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" +     // 0xE8 - 0xEF
-            "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" +     // 0xF0 - 0xF7
-            "\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u00A1\u00A2\u00A3\u0000\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u00BF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0083\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0088\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0098\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5" +
-            "\u00C6\u00C7\u00C8\u00C9\u0000\u00CB\u00CC\u00CD" +
-            "\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" +
-            "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" +
-            "\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5" +
-            "\u00F6\u00F7\u00F8\u00F9\u00FA\u0000\u0000\u0000" +
-            "\u0000\u0000\u00D4\u00D5\u00D6\u00D7\u00D8\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00FD\u00FE\u0000" +
-            "\u0000\u0000\u0096\u0097\u0000\u0000\u0000\u0091" +
-            "\u0092\u0082\u0000\u0093\u0094\u0084\u0000\u0086" +
-            "\u0087\u0095\u0000\u0000\u0000\u0085\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0089" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u008B\u009B\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00A4\u0000\u0080\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0099" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 248, 453, 395, 395, 674, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            919, 1141, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MS1256.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,334 +0,0 @@
-
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MS1256
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public String historicalName() {
-        return "Cp1256";
-    }
-
-    public MS1256() {
-        super("windows-1256", ExtendedCharsets.aliasesFor("windows-1256"));
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS1256));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return MS1256.Decoder.byteToCharTable;
-    }
-
-    public short[] getEncoderIndex1() {
-        return MS1256.Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return MS1256.Encoder.index2;
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-    private final static String byteToCharTable =
-
-        "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021" +     // 0x80 - 0x87
-        "\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688" +     // 0x88 - 0x8F
-        "\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +     // 0x90 - 0x97
-        "\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA" +     // 0x98 - 0x9F
-        "\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +     // 0xA0 - 0xA7
-        "\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF" +     // 0xA8 - 0xAF
-        "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-        "\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F" +     // 0xB8 - 0xBF
-        "\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627" +     // 0xC0 - 0xC7
-        "\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F" +     // 0xC8 - 0xCF
-        "\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7" +     // 0xD0 - 0xD7
-        "\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643" +     // 0xD8 - 0xDF
-        "\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7" +     // 0xE0 - 0xE7
-        "\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF" +     // 0xE8 - 0xEF
-        "\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7" +     // 0xF0 - 0xF7
-        "\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2" +     // 0xF8 - 0xFF
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-        "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-        public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00D7" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E0\u0000\u00E2\u0000\u0000\u0000\u0000\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u0000\u0000\u00EE\u00EF" +
-            "\u0000\u0000\u0000\u0000\u00F4\u0000\u0000\u00F7" +
-            "\u0000\u00F9\u0000\u00FB\u00FC\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008C" +
-            "\u009C\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0083" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0088\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A1\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00BA\u0000\u0000\u0000\u00BF\u0000\u00C1" +
-            "\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9" +
-            "\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1" +
-            "\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA" +
-            "\u00DB\u0000\u0000\u0000\u0000\u0000\u00DC\u00DD" +
-            "\u00DE\u00DF\u00E1\u00E3\u00E4\u00E5\u00E6\u00EC" +
-            "\u00ED\u00F0\u00F1\u00F2\u00F3\u00F5\u00F6\u00F8" +
-            "\u00FA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008A" +
-            "\u0000\u0000\u0000\u0000\u0081\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u008D\u0000\u008F\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009A" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u008E\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0098" +
-            "\u0000\u0000\u0000\u0000\u0000\u0090\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u00AA\u0000\u0000\u00C0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00FF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u009D\u009E" +
-            "\u00FD\u00FE\u0000\u0000\u0000\u0096\u0097\u0000" +
-            "\u0000\u0000\u0091\u0092\u0082\u0000\u0093\u0094" +
-            "\u0084\u0000\u0086\u0087\u0095\u0000\u0000\u0000" +
-            "\u0085\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0089\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008B\u009B\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0099\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 253, 458, 400, 400, 400, 702, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            946, 1168, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MS1258.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,340 +0,0 @@
-
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MS1258
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public String historicalName() {
-        return "Cp1258";
-    }
-
-    public MS1258() {
-        super("windows-1258", ExtendedCharsets.aliasesFor("windows-1258"));
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS1258));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return MS1258.Decoder.byteToCharTable;
-    }
-
-    public short[] getEncoderIndex1() {
-        return MS1258.Encoder.index1;
-    }
-
-    public String getEncoderIndex2() {
-        return MS1258.Encoder.index2;
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021" +     // 0x80 - 0x87
-            "\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD" +     // 0x88 - 0x8F
-            "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +     // 0x90 - 0x97
-            "\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178" +     // 0x98 - 0x9F
-            "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +     // 0xA0 - 0xA7
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +     // 0xA8 - 0xAF
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +     // 0xB0 - 0xB7
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +     // 0xB8 - 0xBF
-            "\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7" +     // 0xC0 - 0xC7
-            "\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF" +     // 0xC8 - 0xCF
-            "\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7" +     // 0xD0 - 0xD7
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF" +     // 0xD8 - 0xDF
-            "\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7" +     // 0xE0 - 0xE7
-            "\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF" +     // 0xE8 - 0xEF
-            "\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7" +     // 0xF0 - 0xF7
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +
-            "\u00C0\u00C1\u00C2\u0000\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00CA\u00CB\u0000\u00CD\u00CE\u00CF" +
-            "\u0000\u00D1\u0000\u00D3\u00D4\u0000\u00D6\u00D7" +
-            "\u00D8\u00D9\u00DA\u00DB\u00DC\u0000\u0000\u00DF" +
-            "\u00E0\u00E1\u00E2\u0000\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u0000\u00ED\u00EE\u00EF" +
-            "\u0000\u00F1\u0000\u00F3\u00F4\u0000\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u00FB\u00FC\u0000\u0000\u00FF" +
-            "\u0000\u0000\u00C3\u00E3\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D0\u00F0\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u008C\u009C\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0083\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D5\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DD" +
-            "\u00FD\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0088\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0098" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00CC\u00EC\u0000\u00DE\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D2\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F2\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0096\u0097\u0000\u0000\u0000" +
-            "\u0091\u0092\u0082\u0000\u0093\u0094\u0084\u0000" +
-            "\u0086\u0087\u0095\u0000\u0000\u0000\u0085\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0089\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u008B\u009B\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00FE\u0080\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0099\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 256, 491, 747, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            984, 1206, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-            433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MS874.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,267 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MS874 extends Charset implements HistoricallyNamedCharset
-{
-    public MS874() {
-        super("x-windows-874", ExtendedCharsets.aliasesFor("x-windows-874"));
-    }
-
-    public String historicalName() {
-        return "MS874";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof MS874));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends SingleByteDecoder {
-
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-            "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD" +     // 0x80 - 0x87
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0x88 - 0x8F
-            "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" +     // 0x90 - 0x97
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0x98 - 0x9F
-            "\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" +     // 0xA0 - 0xA7
-            "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" +     // 0xA8 - 0xAF
-            "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" +     // 0xB0 - 0xB7
-            "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" +     // 0xB8 - 0xBF
-            "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" +     // 0xC0 - 0xC7
-            "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" +     // 0xC8 - 0xCF
-            "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" +     // 0xD0 - 0xD7
-            "\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F" +     // 0xD8 - 0xDF
-            "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" +     // 0xE0 - 0xE7
-            "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F" +     // 0xE8 - 0xEF
-            "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" +     // 0xF0 - 0xF7
-            "\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    protected static class Encoder extends SingleByteEncoder {
-
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-            "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-            "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-            "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +
-            "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-            "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-            "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +
-            "\u00D8\u00D9\u00DA\u0000\u0000\u0000\u0000\u00DF" +
-            "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-            "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-            "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-            "\u00F8\u00F9\u00FA\u00FB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0096\u0097\u0000\u0000\u0000\u0091\u0092\u0000" +
-            "\u0000\u0093\u0094\u0000\u0000\u0000\u0000\u0095" +
-            "\u0000\u0000\u0000\u0085\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0080\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 416, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            653, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-            161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacArabic.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,279 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacArabic
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacArabic() {
-        super("x-MacArabic", ExtendedCharsets.aliasesFor("x-MacArabic"));
-    }
-
-    public String historicalName() {
-        return "MacArabic";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacArabic);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\u00A0\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" +        // 0x80 - 0x87
-            "\u00E0\u00E2\u00E4\u06BA\u00AB\u00E7\u00E9\u00E8" +        // 0x88 - 0x8F
-            "\u00EA\u00EB\u00ED\u2026\u00EE\u00EF\u00F1\u00F3" +        // 0x90 - 0x97
-            "\u00BB\u00F4\u00F6\u00F7\u00FA\u00F9\u00FB\u00FC" +        // 0x98 - 0x9F
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u066A\uFFFD\uFFFD" +        // 0xA0 - 0xA7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u060C\uFFFD\uFFFD\uFFFD" +        // 0xA8 - 0xAF
-            "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667" +        // 0xB0 - 0xB7
-            "\u0668\u0669\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F" +        // 0xB8 - 0xBF
-            "\u066D\u0621\u0622\u0623\u0624\u0625\u0626\u0627" +        // 0xC0 - 0xC7
-            "\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F" +        // 0xC8 - 0xCF
-            "\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637" +        // 0xD0 - 0xD7
-            "\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xD8 - 0xDF
-            "\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647" +        // 0xE0 - 0xE7
-            "\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F" +        // 0xE8 - 0xEF
-            "\u0650\u0651\u0652\u067E\u0679\u0686\u06D5\u06A4" +        // 0xF0 - 0xF7
-            "\u06AF\u0688\u0691\uFFFD\uFFFD\uFFFD\u0698\u06D2" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0081\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008C\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0098\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0082" +
-            "\u0000\u0083\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0084\u0000\u0000\u0000\u0000\u0085\u0000" +
-            "\u0000\u0000\u0000\u0000\u0086\u0000\u0000\u0000" +
-            "\u0088\u0087\u0089\u0000\u008A\u0000\u0000\u008D" +
-            "\u008F\u008E\u0090\u0091\u0000\u0092\u0094\u0095" +
-            "\u0000\u0096\u0000\u0097\u0099\u0000\u009A\u009B" +
-            "\u0000\u009D\u009C\u009E\u009F\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00AC\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00BB\u0000\u0000\u0000" +
-            "\u00BF\u0000\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6" +
-            "\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE" +
-            "\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" +
-            "\u00D7\u00D8\u00D9\u00DA\u0000\u0000\u0000\u0000" +
-            "\u0000\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6" +
-            "\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE" +
-            "\u00EF\u00F0\u00F1\u00F2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6" +
-            "\u00B7\u00B8\u00B9\u00A5\u0000\u0000\u00C0\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00F4\u0000\u0000\u0000\u0000\u00F3" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F5" +
-            "\u0000\u00F9\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00FA\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00FE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00F8\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u008B\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00FF\u0000\u0000\u00F6\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0093\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 253, 253, 253, 253, 253, 497, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            715, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacCentralEurope.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,346 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacCentralEurope
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacCentralEurope() {
-        super("x-MacCentralEurope", ExtendedCharsets.aliasesFor("x-MacCentralEurope"));
-    }
-
-    public String historicalName() {
-        return "MacCentralEurope";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacCentralEurope);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1" +        // 0x80 - 0x87
-            "\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179" +        // 0x88 - 0x8F
-            "\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3" +        // 0x90 - 0x97
-            "\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC" +        // 0x98 - 0x9F
-            "\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF" +        // 0xA0 - 0xA7
-            "\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E" +        // 0xA8 - 0xAF
-            "\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211" +        // 0xB0 - 0xB7
-            "\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145" +        // 0xB8 - 0xBF
-            "\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB" +        // 0xC0 - 0xC7
-            "\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C" +        // 0xC8 - 0xCF
-            "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" +        // 0xD0 - 0xD7
-            "\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156" +        // 0xD8 - 0xDF
-            "\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1" +        // 0xE0 - 0xE7
-            "\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4" +        // 0xE8 - 0xEF
-            "\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173" +        // 0xF0 - 0xF7
-            "\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u0000\u0000\u00A3\u0000\u0000\u0000\u00A4" +
-            "\u00AC\u00A9\u0000\u00C7\u00C2\u0000\u00A8\u0000" +
-            "\u00A1\u0000\u0000\u0000\u0000\u0000\u00A6\u0000" +
-            "\u0000\u0000\u0000\u00C8\u0000\u0000\u0000\u0000" +
-            "\u0000\u00E7\u0000\u0000\u0080\u0000\u0000\u0000" +
-            "\u0000\u0083\u0000\u0000\u0000\u00EA\u0000\u0000" +
-            "\u0000\u0000\u0000\u00EE\u00EF\u00CD\u0085\u0000" +
-            "\u0000\u0000\u00F2\u0000\u0086\u00F8\u0000\u00A7" +
-            "\u0000\u0087\u0000\u0000\u008A\u0000\u0000\u0000" +
-            "\u0000\u008E\u0000\u0000\u0000\u0092\u0000\u0000" +
-            "\u0000\u0000\u0000\u0097\u0099\u009B\u009A\u00D6" +
-            "\u0000\u0000\u009C\u0000\u009F\u00F9\u0000\u0000" +
-            "\u0081\u0082\u0000\u0000\u0084\u0088\u008C\u008D" +
-            "\u0000\u0000\u0000\u0000\u0089\u008B\u0091\u0093" +
-            "\u0000\u0000\u0094\u0095\u0000\u0000\u0096\u0098" +
-            "\u00A2\u00AB\u009D\u009E\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00FE\u00AE\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00B1\u00B4\u0000\u0000\u00AF\u00B0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00B5\u00FA" +
-            "\u0000\u00BD\u00BE\u00B9\u00BA\u00BB\u00BC\u0000" +
-            "\u0000\u00FC\u00B8\u00C1\u00C4\u00BF\u00C0\u00C5" +
-            "\u00CB\u0000\u0000\u0000\u00CF\u00D8\u0000\u0000" +
-            "\u00CC\u00CE\u0000\u0000\u00D9\u00DA\u00DF\u00E0" +
-            "\u00DB\u00DE\u00E5\u00E6\u0000\u0000\u0000\u0000" +
-            "\u00E1\u00E4\u0000\u0000\u00E8\u00E9\u0000\u0000" +
-            "\u0000\u0000\u00ED\u00F0\u0000\u0000\u00F1\u00F3" +
-            "\u00F4\u00F5\u00F6\u00F7\u0000\u0000\u0000\u0000" +
-            "\u0000\u008F\u0090\u00FB\u00FD\u00EB\u00EC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00FF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D0\u00D1\u0000\u0000\u0000\u00D4\u00D5\u00E2" +
-            "\u0000\u00D2\u00D3\u00E3\u0000\u00A0\u0000\u00A5" +
-            "\u0000\u0000\u0000\u00C9\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DC\u00DD" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00AA\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B6\u0000\u0000\u0000\u00C6" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00B7\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00C3\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00AD\u0000\u0000\u0000\u00B2\u00B3\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00D7\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 440, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            677, 899, 1153, 383, 383, 1255, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-            383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacCroatian.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacCroatian
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacCroatian() {
-        super("x-MacCroatian", ExtendedCharsets.aliasesFor("x-MacCroatian"));
-    }
-
-    public String historicalName() {
-        return "MacCroatian";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacCroatian);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" +        // 0x80 - 0x87
-            "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" +        // 0x88 - 0x8F
-            "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" +        // 0x90 - 0x97
-            "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" +        // 0x98 - 0x9F
-            "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" +        // 0xA0 - 0xA7
-            "\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8" +        // 0xA8 - 0xAF
-            "\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211" +        // 0xB0 - 0xB7
-            "\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8" +        // 0xB8 - 0xBF
-            "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB" +        // 0xC0 - 0xC7
-            "\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" +        // 0xC8 - 0xCF
-            "\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" +        // 0xD0 - 0xD7
-            "\uF8FF\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB" +        // 0xD8 - 0xDF
-            "\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1" +        // 0xE0 - 0xE7
-            "\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" +        // 0xE8 - 0xEF
-            "\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC" +        // 0xF0 - 0xF7
-            "\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u00C1\u00A2\u00A3\u00DB\u0000\u0000\u00A4" +
-            "\u00AC\u00D9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" +
-            "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" +
-            "\u00FC\u0000\u00BC\u00DF\u0000\u0000\u0000\u00C0" +
-            "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u00DE\u0082" +
-            "\u00E9\u0083\u00FD\u00FA\u00ED\u00EA\u00EB\u00EC" +
-            "\u0000\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" +
-            "\u00AF\u00F4\u00F2\u00F3\u0086\u0000\u0000\u00A7" +
-            "\u0088\u0087\u0089\u008B\u008A\u008C\u00FE\u008D" +
-            "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" +
-            "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" +
-            "\u00BF\u009D\u009C\u009E\u009F\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00C6\u00E6\u0000\u0000\u0000" +
-            "\u0000\u00C8\u00E8\u0000\u0000\u00D0\u00F0\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00F5\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00CE" +
-            "\u00CF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00A9\u00B9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00AE\u00BE\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C4" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00F6\u00FF\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00FB\u0000\u00F7\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F9" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E0" +
-            "\u00D1\u0000\u0000\u0000\u00D4\u00D5\u00E2\u0000" +
-            "\u00D2\u00D3\u00E3\u0000\u00A0\u0000\u00A5\u0000" +
-            "\u0000\u0000\u00C9\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00E4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00DC\u00DD\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00AA\u0000\u0000\u0000" +
-            "\u00BD\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00B6\u0000\u0000\u0000\u00B4\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B8" +
-            "\u0000\u00B7\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C3\u0000\u0000\u0000\u00B0\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00BA\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AD\u0000\u0000\u0000\u00B2\u00B3\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D8";
-
-    private final static short index1[] = {
-            0, 253, 458, 679, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            916, 1138, 1392, 400, 400, 1494, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
-            400, 400, 400, 400, 400, 400, 400, 400, 1697, 400, 400, 400, 400, 400, 400, 400,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacCyrillic.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,361 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacCyrillic
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacCyrillic() {
-        super("x-MacCyrillic", ExtendedCharsets.aliasesFor("x-MacCyrillic"));
-    }
-
-    public String historicalName() {
-        return "MacCyrillic";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacCyrillic);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" +        // 0x80 - 0x87
-            "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" +        // 0x88 - 0x8F
-            "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" +        // 0x90 - 0x97
-            "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" +        // 0x98 - 0x9F
-            "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406" +        // 0xA0 - 0xA7
-            "\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453" +        // 0xA8 - 0xAF
-            "\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408" +        // 0xB0 - 0xB7
-            "\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A" +        // 0xB8 - 0xBF
-            "\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB" +        // 0xC0 - 0xC7
-            "\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455" +        // 0xC8 - 0xCF
-            "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E" +        // 0xD0 - 0xD7
-            "\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F" +        // 0xD8 - 0xDF
-            "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" +        // 0xE0 - 0xE7
-            "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" +        // 0xE8 - 0xEF
-            "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" +        // 0xF0 - 0xF7
-            "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u0000\u00A2\u00A3\u00FF\u0000\u0000\u00A4" +
-            "\u0000\u00A9\u0000\u00C7\u00C2\u0000\u00A8\u0000" +
-            "\u00A1\u00B1\u0000\u0000\u0000\u00B5\u00A6\u0000" +
-            "\u0000\u0000\u0000\u00C8\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00D6" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00DD\u00AB\u00AE\u00B8\u00C1" +
-            "\u00A7\u00BA\u00B7\u00BC\u00BE\u00CB\u00CD\u0000" +
-            "\u00D8\u00DA\u0080\u0081\u0082\u0083\u0084\u0085" +
-            "\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D" +
-            "\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095" +
-            "\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D" +
-            "\u009E\u009F\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" +
-            "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" +
-            "\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5" +
-            "\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD" +
-            "\u00FE\u00DF\u0000\u00DE\u00AC\u00AF\u00B9\u00CF" +
-            "\u00B4\u00BB\u00C0\u00BD\u00BF\u00CC\u00CE\u0000" +
-            "\u00D9\u00DB\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000\u00D4" +
-            "\u00D5\u0000\u0000\u00D2\u00D3\u00D7\u0000\u00A0" +
-            "\u0000\u00A5\u0000\u0000\u0000\u00C9\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DC" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AA\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00B6\u0000\u0000\u0000\u00C6\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C3\u0000\u0000\u0000\u00B0\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C5" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AD" +
-            "\u0000\u0000\u0000\u00B2\u00B3\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 248, 395, 395, 650, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            887, 1121, 1375, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacDingbat.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,316 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacDingbat
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacDingbat() {
-        super("x-MacDingbat", ExtendedCharsets.aliasesFor("x-MacDingbat"));
-    }
-
-    public String historicalName() {
-        return "MacDingbat";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacDingbat);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x80 - 0x87
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x88 - 0x8F
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x90 - 0x97
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x98 - 0x9F
-            "\uFFFD\u2761\u2762\u2763\u2764\u2765\u2766\u2767" +        // 0xA0 - 0xA7
-            "\u2663\u2666\u2665\u2660\u2460\u2461\u2462\u2463" +        // 0xA8 - 0xAF
-            "\u2464\u2465\u2466\u2467\u2468\u2469\u2776\u2777" +        // 0xB0 - 0xB7
-            "\u2778\u2779\u277A\u277B\u277C\u277D\u277E\u277F" +        // 0xB8 - 0xBF
-            "\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787" +        // 0xC0 - 0xC7
-            "\u2788\u2789\u278A\u278B\u278C\u278D\u278E\u278F" +        // 0xC8 - 0xCF
-            "\u2790\u2791\u2792\u2793\u2794\u2192\u2194\u2195" +        // 0xD0 - 0xD7
-            "\u2798\u2799\u279A\u279B\u279C\u279D\u279E\u279F" +        // 0xD8 - 0xDF
-            "\u27A0\u27A1\u27A2\u27A3\u27A4\u27A5\u27A6\u27A7" +        // 0xE0 - 0xE7
-            "\u27A8\u27A9\u27AA\u27AB\u27AC\u27AD\u27AE\u27AF" +        // 0xE8 - 0xEF
-            "\uFFFD\u27B1\u27B2\u27B3\u27B4\u27B5\u27B6\u27B7" +        // 0xF0 - 0xF7
-            "\u27B8\u27B9\u27BA\u27BB\u27BC\u27BD\u27BE\uFFFD" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u2701\u2702\u2703\u2704\u260E\u2706\u2707" +        // 0x20 - 0x27
-            "\u2708\u2709\u261B\u261E\u270C\u270D\u270E\u270F" +        // 0x28 - 0x2F
-            "\u2710\u2711\u2712\u2713\u2714\u2715\u2716\u2717" +        // 0x30 - 0x37
-            "\u2718\u2719\u271A\u271B\u271C\u271D\u271E\u271F" +        // 0x38 - 0x3F
-            "\u2720\u2721\u2722\u2723\u2724\u2725\u2726\u2727" +        // 0x40 - 0x47
-            "\u2605\u2729\u272A\u272B\u272C\u272D\u272E\u272F" +        // 0x48 - 0x4F
-            "\u2730\u2731\u2732\u2733\u2734\u2735\u2736\u2737" +        // 0x50 - 0x57
-            "\u2738\u2739\u273A\u273B\u273C\u273D\u273E\u273F" +        // 0x58 - 0x5F
-            "\u2740\u2741\u2742\u2743\u2744\u2745\u2746\u2747" +        // 0x60 - 0x67
-            "\u2748\u2749\u274A\u274B\u25CF\u274D\u25A0\u274F" +        // 0x68 - 0x6F
-            "\u2750\u2751\u2752\u25B2\u25BC\u25C6\u2756\u25D7" +        // 0x70 - 0x77
-            "\u2758\u2759\u275A\u275B\u275C\u275D\u275E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D5\u0000\u00D6\u00D7\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00AC\u00AD" +
-            "\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u006E\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0073\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0074\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0075\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u006C" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0077" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0048\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0025\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u002A\u0000" +
-            "\u0000\u002B\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AB\u0000\u0000\u00A8\u0000" +
-            "\u00AA\u00A9\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0021\"\u0023\u0024\u0000" +
-            "\u0026\'\u0028\u0029\u0000\u0000\u002C\u002D" +
-            "\u002E\u002F\u0030\u0031\u0032\u0033\u0034\u0035" +
-            "\u0036\u0037\u0038\u0039\u003A\u003B\u003C\u003D" +
-            "\u003E\u003F\u0040\u0041\u0042\u0043\u0044\u0045" +
-            "\u0046\u0047\u0000\u0049\u004A\u004B\u004C\u004D" +
-            "\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055" +
-            "\u0056\u0057\u0058\u0059\u005A\u005B\\\u005D" +
-            "\u005E\u005F\u0060\u0061\u0062\u0063\u0064\u0065" +
-            "\u0066\u0067\u0068\u0069\u006A\u006B\u0000\u006D" +
-            "\u0000\u006F\u0070\u0071\u0072\u0000\u0000\u0000" +
-            "\u0076\u0000\u0078\u0079\u007A\u007B\u007C\u007D" +
-            "\u007E\u0000\u0000\u00A1\u00A2\u00A3\u00A4\u00A5" +
-            "\u00A6\u00A7\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD" +
-            "\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5" +
-            "\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD" +
-            "\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u0000" +
-            "\u0000\u0000\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD" +
-            "\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" +
-            "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" +
-            "\u00EE\u00EF\u0000\u00F1\u00F2\u00F3\u00F4\u00F5" +
-            "\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD" +
-            "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 238, 128, 128, 398, 504, 755, 1010, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-            128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacGreek.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,327 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacGreek
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacGreek() {
-        super("x-MacGreek", ExtendedCharsets.aliasesFor("x-MacGreek"));
-    }
-
-    public String historicalName() {
-        return "MacGreek";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacGreek);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385" +        // 0x80 - 0x87
-            "\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8" +        // 0x88 - 0x8F
-            "\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD" +        // 0x90 - 0x97
-            "\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC" +        // 0x98 - 0x9F
-            "\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF" +        // 0xA0 - 0xA7
-            "\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387" +        // 0xA8 - 0xAF
-            "\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396" +        // 0xB0 - 0xB7
-            "\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9" +        // 0xB8 - 0xBF
-            "\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB" +        // 0xC0 - 0xC7
-            "\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153" +        // 0xC8 - 0xCF
-            "\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389" +        // 0xD0 - 0xD7
-            "\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F" +        // 0xD8 - 0xDF
-            "\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3" +        // 0xE0 - 0xE7
-            "\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF" +        // 0xE8 - 0xEF
-            "\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2" +        // 0xF0 - 0xF7
-            "\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u0000\u0000\u0092\u0000\u00B4\u009B\u00AC" +
-            "\u008C\u00A9\u0000\u00C7\u00C2\u009C\u00A8\u0000" +
-            "\u00AE\u00B1\u0082\u0084\u0000\u0000\u0000\u0000" +
-            "\u0000\u0081\u0000\u00C8\u0000\u0097\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0000" +
-            "\u0000\u0083\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0085\u0000" +
-            "\u0000\u0000\u0000\u0000\u0086\u0000\u0000\u00A7" +
-            "\u0088\u0000\u0089\u0000\u008A\u0000\u0000\u008D" +
-            "\u008F\u008E\u0090\u0091\u0000\u0000\u0094\u0095" +
-            "\u0000\u0000\u0000\u0000\u0099\u0000\u009A\u00D6" +
-            "\u0000\u009D\u0000\u009E\u009F\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u008B\u0087\u00CD\u00AF\u00CE\u00D7\u00D8" +
-            "\u0000\u00D9\u0000\u00DA\u00DF\u00FD\u00B0\u00B5" +
-            "\u00A1\u00A2\u00B6\u00B7\u00B8\u00A3\u00B9\u00BA" +
-            "\u00A4\u00BB\u00C1\u00A5\u00C3\u00A6\u00C4\u0000" +
-            "\u00AA\u00C6\u00CB\u00BC\u00CC\u00BE\u00BF\u00AB" +
-            "\u00BD\u00C0\u00DB\u00DC\u00DD\u00FE\u00E1\u00E2" +
-            "\u00E7\u00E4\u00E5\u00FA\u00E8\u00F5\u00E9\u00EB" +
-            "\u00EC\u00ED\u00EE\u00EA\u00EF\u00F0\u00F2\u00F7" +
-            "\u00F3\u00F4\u00F9\u00E6\u00F8\u00E3\u00F6\u00FB" +
-            "\u00FC\u00DE\u00E0\u00F1\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00D0\u0000\u00D1" +
-            "\u0000\u0000\u00D4\u00D5\u0000\u0000\u00D2\u00D3" +
-            "\u0000\u0000\u00A0\u0000\u0096\u0000\u0000\u0000" +
-            "\u00C9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0098\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0093\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AD\u0000\u0000\u0000\u00B2\u00B3\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 253, 337, 461, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            698, 920, 1104, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-            337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacHebrew.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacHebrew
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacHebrew() {
-        super("x-MacHebrew", ExtendedCharsets.aliasesFor("x-MacHebrew"));
-    }
-
-    public String historicalName() {
-        return "MacHebrew";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacHebrew);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\uFB1F\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" +        // 0x80 - 0x87
-            "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" +        // 0x88 - 0x8F
-            "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" +        // 0x90 - 0x97
-            "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" +        // 0x98 - 0x9F
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u20AA\uFFFD" +        // 0xA0 - 0xA7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xA8 - 0xAF
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xB0 - 0xB7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xB8 - 0xBF
-            "\uFFFD\u201E\uFFFD\uFFFD\uFFFD\uFFFD\u05BC\uFB4B" +        // 0xC0 - 0xC7
-            "\uFB35\u2026\u00A0\u05B8\u05B7\u05B5\u05B6\u05B4" +        // 0xC8 - 0xCF
-            "\u2013\u2014\u201C\u201D\u2018\u2019\uFB2A\uFB2B" +        // 0xD0 - 0xD7
-            "\u05BF\u05B0\u05B2\u05B1\u05BB\u05B9\uFFFD\u05B3" +        // 0xD8 - 0xDF
-            "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" +        // 0xE0 - 0xE7
-            "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" +        // 0xE8 - 0xEF
-            "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" +        // 0xF0 - 0xF7
-            "\u05E8\u05E9\u05EA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0082" +
-            "\u0000\u0083\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0084\u0000\u0000\u0000\u0000\u0085\u0000" +
-            "\u0000\u0000\u0000\u0000\u0086\u0000\u0000\u0000" +
-            "\u0088\u0087\u0089\u008B\u008A\u008C\u0000\u008D" +
-            "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" +
-            "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u0000" +
-            "\u0000\u009D\u009C\u009E\u009F\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00D9\u00DB\u00DA" +
-            "\u00DF\u00CF\u00CD\u00CE\u00CC\u00CB\u00DD\u0000" +
-            "\u00DC\u00C6\u0000\u0000\u00D8\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00E0\u00E1\u00E2" +
-            "\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA" +
-            "\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2" +
-            "\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00D0\u00D1\u0000" +
-            "\u0000\u0000\u00D4\u00D5\u0000\u0000\u00D2\u00D3" +
-            "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00A6\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0081\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00D6\u00D7\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C8\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00C7\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 253, 253, 253, 253, 333, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            570, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-            253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 795, 253, 253, 253, 253,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacIceland.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacIceland
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacIceland() {
-        super("x-MacIceland", ExtendedCharsets.aliasesFor("x-MacIceland"));
-    }
-
-    public String historicalName() {
-        return "MacIceland";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacIceland);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" +        // 0x80 - 0x87
-            "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" +        // 0x88 - 0x8F
-            "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" +        // 0x90 - 0x97
-            "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" +        // 0x98 - 0x9F
-            "\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" +        // 0xA0 - 0xA7
-            "\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8" +        // 0xA8 - 0xAF
-            "\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211" +        // 0xB0 - 0xB7
-            "\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8" +        // 0xB8 - 0xBF
-            "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB" +        // 0xC0 - 0xC7
-            "\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" +        // 0xC8 - 0xCF
-            "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" +        // 0xD0 - 0xD7
-            "\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE" +        // 0xD8 - 0xDF
-            "\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1" +        // 0xE0 - 0xE7
-            "\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" +        // 0xE8 - 0xEF
-            "\uF8FF\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC" +        // 0xF0 - 0xF7
-            "\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u00C1\u00A2\u00A3\u00DB\u00B4\u0000\u00A4" +
-            "\u00AC\u00A9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" +
-            "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" +
-            "\u00FC\u0000\u00BC\u00C8\u0000\u0000\u0000\u00C0" +
-            "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u00AE\u0082" +
-            "\u00E9\u0083\u00E6\u00E8\u00ED\u00EA\u00EB\u00EC" +
-            "\u00DC\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" +
-            "\u00AF\u00F4\u00F2\u00F3\u0086\u00A0\u00DE\u00A7" +
-            "\u0088\u0087\u0089\u008B\u008A\u008C\u00BE\u008D" +
-            "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" +
-            "\u00DD\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" +
-            "\u00BF\u009D\u009C\u009E\u009F\u00E0\u00DF\u00D8" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00CE\u00CF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F6\u00FF\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB" +
-            "\u00FE\u00F7\u00FD\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B9\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000" +
-            "\u00D4\u00D5\u00E2\u0000\u00D2\u00D3\u00E3\u0000" +
-            "\u0000\u0000\u00A5\u0000\u0000\u0000\u00C9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AA\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00B6\u0000" +
-            "\u0000\u0000\u00C6\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B8\u0000\u00B7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00C3\u0000" +
-            "\u0000\u0000\u00B0\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00AD\u0000\u0000\u0000" +
-            "\u00B2\u00B3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D7\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F0";
-
-    private final static short index1[] = {
-            0, 256, 461, 683, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            920, 1142, 1396, 403, 403, 1498, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 1701, 403, 403, 403, 403, 403, 403, 403,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacRoman.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacRoman
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacRoman() {
-        super("x-MacRoman", ExtendedCharsets.aliasesFor("x-MacRoman"));
-    }
-
-    public String historicalName() {
-        return "MacRoman";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacRoman);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" +     // 0x80 - 0x87
-            "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" +     // 0x88 - 0x8F
-            "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" +     // 0x90 - 0x97
-            "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" +     // 0x98 - 0x9F
-            "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" +     // 0xA0 - 0xA7
-            "\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8" +     // 0xA8 - 0xAF
-            "\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211" +     // 0xB0 - 0xB7
-            "\u220F\u03C0\u222B\u00AA\u00BA\u03A9\u00E6\u00F8" +     // 0xB8 - 0xBF
-            "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB" +     // 0xC0 - 0xC7
-            "\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" +     // 0xC8 - 0xCF
-            "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" +     // 0xD0 - 0xD7
-            "\u00FF\u0178\u2044\u20AC\u2039\u203A\uFB01\uFB02" +     // 0xD8 - 0xDF
-            "\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1" +     // 0xE0 - 0xE7
-            "\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" +     // 0xE8 - 0xEF
-            "\uF8FF\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC" +     // 0xF0 - 0xF7
-            "\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +     // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +     // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +     // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +     // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +     // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +     // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +     // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +     // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u00C1\u00A2\u00A3\u0000\u00B4\u0000\u00A4" +
-            "\u00AC\u00A9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" +
-            "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" +
-            "\u00FC\u0000\u00BC\u00C8\u0000\u0000\u0000\u00C0" +
-            "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u00AE\u0082" +
-            "\u00E9\u0083\u00E6\u00E8\u00ED\u00EA\u00EB\u00EC" +
-            "\u0000\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" +
-            "\u00AF\u00F4\u00F2\u00F3\u0086\u0000\u0000\u00A7" +
-            "\u0088\u0087\u0089\u008B\u008A\u008C\u00BE\u008D" +
-            "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" +
-            "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" +
-            "\u00BF\u009D\u009C\u009E\u009F\u0000\u0000\u00D8" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00CE\u00CF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F6\u00FF\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB" +
-            "\u00FE\u00F7\u00FD\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B9\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000" +
-            "\u00D4\u00D5\u00E2\u0000\u00D2\u00D3\u00E3\u0000" +
-            "\u00A0\u00E0\u00A5\u0000\u0000\u0000\u00C9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DC\u00DD\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00B6\u0000" +
-            "\u0000\u0000\u00C6\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B8\u0000\u00B7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00C3\u0000" +
-            "\u0000\u0000\u00B0\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00AD\u0000\u0000\u0000" +
-            "\u00B2\u00B3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D7\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F0\u0000\u00DE\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 256, 461, 683, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            920, 1142, 1396, 403, 403, 1498, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 1701, 403, 403, 1957, 403, 403, 403, 403,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacRomania.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacRomania
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacRomania() {
-        super("x-MacRomania", ExtendedCharsets.aliasesFor("x-MacRomania"));
-    }
-
-    public String historicalName() {
-        return "MacRomania";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacRomania);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" +        // 0x80 - 0x87
-            "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" +        // 0x88 - 0x8F
-            "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" +        // 0x90 - 0x97
-            "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" +        // 0x98 - 0x9F
-            "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" +        // 0xA0 - 0xA7
-            "\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E" +        // 0xA8 - 0xAF
-            "\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211" +        // 0xB0 - 0xB7
-            "\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F" +        // 0xB8 - 0xBF
-            "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB" +        // 0xC0 - 0xC7
-            "\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" +        // 0xC8 - 0xCF
-            "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" +        // 0xD0 - 0xD7
-            "\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163" +        // 0xD8 - 0xDF
-            "\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1" +        // 0xE0 - 0xE7
-            "\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" +        // 0xE8 - 0xEF
-            "\uF8FF\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC" +        // 0xF0 - 0xF7
-            "\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u00C1\u00A2\u00A3\u00DB\u00B4\u0000\u00A4" +
-            "\u00AC\u00A9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" +
-            "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" +
-            "\u00FC\u0000\u00BC\u00C8\u0000\u0000\u0000\u00C0" +
-            "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u0000\u0082" +
-            "\u00E9\u0083\u00E6\u00E8\u00ED\u00EA\u00EB\u00EC" +
-            "\u0000\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" +
-            "\u0000\u00F4\u00F2\u00F3\u0086\u0000\u0000\u00A7" +
-            "\u0088\u0087\u0089\u008B\u008A\u008C\u0000\u008D" +
-            "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" +
-            "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" +
-            "\u0000\u009D\u009C\u009E\u009F\u0000\u0000\u00D8" +
-            "\u0000\u0000\u00AE\u00BE\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00CE\u00CF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00AF\u00BF" +
-            "\u0000\u0000\u00DE\u00DF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F6\u00FF\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB" +
-            "\u00FE\u00F7\u00FD\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B9\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000" +
-            "\u00D4\u00D5\u00E2\u0000\u00D2\u00D3\u00E3\u0000" +
-            "\u00A0\u00E0\u00A5\u0000\u0000\u0000\u00C9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00DC\u00DD\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AA\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00B6\u0000" +
-            "\u0000\u0000\u00C6\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B8\u0000\u00B7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00C3\u0000" +
-            "\u0000\u0000\u00B0\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00AD\u0000\u0000\u0000" +
-            "\u00B2\u00B3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D7\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F0";
-
-    private final static short index1[] = {
-            0, 256, 461, 683, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            920, 1142, 1396, 403, 403, 1498, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 1701, 403, 403, 403, 403, 403, 403, 403,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacSymbol.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,425 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacSymbol
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacSymbol() {
-        super("x-MacSymbol", ExtendedCharsets.aliasesFor("x-MacSymbol"));
-    }
-
-    public String historicalName() {
-        return "MacSymbol";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacSymbol);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0x80 - 0x87
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0x88 - 0x8F
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0x90 - 0x97
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0x98 - 0x9F
-            "\u20AC\u03D2\u2032\u2264\u2044\u221E\u0192\u2663" +     // 0xA0 - 0xA7
-            "\u2666\u2665\u2660\u2194\u2190\u2191\u2192\u2193" +     // 0xA8 - 0xAF
-            "\u00B0\u00B1\u2033\u2265\u00D7\u221D\u2202\u2022" +     // 0xB0 - 0xB7
-            "\u00F7\u2260\u2261\u2248\u2026\uF8E6\uF8E7\u21B5" +     // 0xB8 - 0xBF
-            "\u2135\u2111\u211C\u2118\u2297\u2295\u2205\u2229" +     // 0xC0 - 0xC7
-            "\u222A\u2283\u2287\u2284\u2282\u2286\u2208\u2209" +     // 0xC8 - 0xCF
-            "\u2220\u2207\u00AE\u00A9\u2122\u220F\u221A\u22C5" +     // 0xD0 - 0xD7
-            "\u00AC\u2227\u2228\u21D4\u21D0\u21D1\u21D2\u21D3" +     // 0xD8 - 0xDF
-            "\u22C4\u3008\uFFFD\uFFFD\uFFFD\u2211\uFFFD\uFFFD" +     // 0xE0 - 0xE7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF8F4" +     // 0xE8 - 0xEF
-            "\uF8FF\u3009\u222B\u2320\uFFFD\u2321\uFFFD\uFFFD" +     // 0xF0 - 0xF7
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +     // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +     // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +     // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +     // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +     // 0x18 - 0x1F
-            "\u0020\u0021\u2200\u0023\u2203\u0025\u0026\u220D" +     // 0x20 - 0x27
-            "\u0028\u0029\u2217\u002B\u002C\u2212\u002E\u002F" +     // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +     // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +     // 0x38 - 0x3F
-            "\u2245\u0391\u0392\u03A7\u0394\u0395\u03A6\u0393" +     // 0x40 - 0x47
-            "\u0397\u0399\u03D1\u039A\u039B\u039C\u039D\u039F" +     // 0x48 - 0x4F
-            "\u03A0\u0398\u03A1\u03A3\u03A4\u03A5\u03C2\u03A9" +     // 0x50 - 0x57
-            "\u039E\u03A8\u0396\u005B\u2234\u005D\u22A5\u005F" +     // 0x58 - 0x5F
-            "\uF8E5\u03B1\u03B2\u03C7\u03B4\u03B5\u03C6\u03B3" +     // 0x60 - 0x67
-            "\u03B7\u03B9\u03D5\u03BA\u03BB\u03BC\u03BD\u03BF" +     // 0x68 - 0x6F
-            "\u03C0\u03B8\u03C1\u03C3\u03C4\u03C5\u03D6\u03C9" +     // 0x70 - 0x77
-            "\u03BE\u03C8\u03B6\u007B\u007C\u007D\u223C\u007F";     // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\u0000\u0023\u0000\u0025\u0026\u0000" +
-            "\u0028\u0029\u0000\u002B\u002C\u0000\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u005B\u0000\u005D\u0000\u005F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u007B\u007C\u007D\u0000\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00D3\u0000\u0000\u00D8\u0000\u00D2\u0000" +
-            "\u00B0\u00B1\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B4" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B8" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A6\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0041\u0042\u0047\u0044\u0045" +
-            "\u005A\u0048\u0051\u0049\u004B\u004C\u004D\u004E" +
-            "\u0058\u004F\u0050\u0052\u0000\u0053\u0054\u0055" +
-            "\u0046\u0043\u0059\u0057\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0061\u0062\u0067\u0064\u0065" +
-            "\u007A\u0068\u0071\u0069\u006B\u006C\u006D\u006E" +
-            "\u0078\u006F\u0070\u0072\u0056\u0073\u0074\u0075" +
-            "\u0066\u0063\u0079\u0077\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u004A\u00A1\u0000\u0000\u006A" +
-            "\u0076\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00B7\u0000\u0000\u0000\u00BC\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A2\u00B2\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00A4\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00A0\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u00C3" +
-            "\u0000\u0000\u0000\u00C2\u0000\u0000\u0000\u0000" +
-            "\u0000\u00D4\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AC" +
-            "\u00AD\u00AE\u00AF\u00AB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00BF\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DC" +
-            "\u00DD\u00DE\u00DF\u00DB\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\"" +
-            "\u0000\u00B6\u0024\u0000\u00C6\u0000\u00D1\u00CE" +
-            "\u00CF\u0000\u0000\u0000\'\u0000\u00D5\u0000" +
-            "\u00E5\u002D\u0000\u0000\u0000\u0000\u002A\u0000" +
-            "\u0000\u00D6\u0000\u0000\u00B5\u00A5\u0000\u00D0" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00D9\u00DA" +
-            "\u00C7\u00C8\u00F2\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\\\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u007E\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0040\u0000\u0000\u00BB" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B9" +
-            "\u00BA\u0000\u0000\u00A3\u00B3\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00CC\u00C9\u00CB\u0000\u00CD\u00CA\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u00C4\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u005E\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00E0\u00D7\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F3" +
-            "\u00F5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AA" +
-            "\u0000\u0000\u00A7\u0000\u00A9\u00A8\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" +
-            "\u00F1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0060" +
-            "\u00BD\u00BE\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00F0";
-
-    private final static short index1[] = {
-            0, 248, 395, 506, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            728, 967, 1223, 1447, 395, 395, 1607, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            1855, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 1882, 395, 395, 395, 395, 395, 395, 395,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacThai.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,338 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacThai
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacThai() {
-        super("x-MacThai", ExtendedCharsets.aliasesFor("x-MacThai"));
-    }
-
-    public String historicalName() {
-        return "MacThai";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacThai);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898" +        // 0x80 - 0x87
-            "\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899" +        // 0x88 - 0x8F
-            "\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888" +        // 0x90 - 0x97
-            "\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD" +        // 0x98 - 0x9F
-            "\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" +        // 0xA0 - 0xA7
-            "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" +        // 0xA8 - 0xAF
-            "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" +        // 0xB0 - 0xB7
-            "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" +        // 0xB8 - 0xBF
-            "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" +        // 0xC0 - 0xC7
-            "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" +        // 0xC8 - 0xCF
-            "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" +        // 0xD0 - 0xD7
-            "\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F" +        // 0xD8 - 0xDF
-            "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" +        // 0xE0 - 0xE7
-            "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F" +        // 0xE8 - 0xEF
-            "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" +        // 0xF0 - 0xF7
-            "\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00FB\u0000\u0080\u0000\u0000\u00FA\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0081\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00A1\u00A2\u00A3\u00A4" +
-            "\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC" +
-            "\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4" +
-            "\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC" +
-            "\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4" +
-            "\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC" +
-            "\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4" +
-            "\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u0000\u0000" +
-            "\u0000\u0000\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4" +
-            "\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC" +
-            "\u00ED\u0000\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4" +
-            "\u00F5\u00F6\u00F7\u00F8\u00F9\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00DC\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00DD\u00DE\u0000\u0000\u0000" +
-            "\u009D\u009E\u0000\u0000\u008D\u008E\u0000\u0000" +
-            "\u0000\u0000\u0091\u0000\u0000\u0000\u0082\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00EE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0092\u0094" +
-            "\u0095\u0096\u0097\u0093\u0098\u0088\u0083\u0099" +
-            "\u0089\u0084\u009A\u008A\u0085\u009B\u008B\u0086" +
-            "\u009C\u008C\u0087\u008F\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00DB";
-
-    private final static short index1[] = {
-            0, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 443, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            688, 910, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-            188, 188, 188, 188, 188, 188, 188, 188, 1034, 188, 188, 188, 188, 188, 1188, 188,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacTurkish.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacTurkish
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacTurkish() {
-        super("x-MacTurkish", ExtendedCharsets.aliasesFor("x-MacTurkish"));
-    }
-
-    public String historicalName() {
-        return "MacTurkish";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacTurkish);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" +        // 0x80 - 0x87
-            "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" +        // 0x88 - 0x8F
-            "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" +        // 0x90 - 0x97
-            "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" +        // 0x98 - 0x9F
-            "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" +        // 0xA0 - 0xA7
-            "\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8" +        // 0xA8 - 0xAF
-            "\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211" +        // 0xB0 - 0xB7
-            "\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8" +        // 0xB8 - 0xBF
-            "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB" +        // 0xC0 - 0xC7
-            "\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" +        // 0xC8 - 0xCF
-            "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" +        // 0xD0 - 0xD7
-            "\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F" +        // 0xD8 - 0xDF
-            "\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1" +        // 0xE0 - 0xE7
-            "\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" +        // 0xE8 - 0xEF
-            "\uF8FF\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC" +        // 0xF0 - 0xF7
-            "\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u00C1\u00A2\u00A3\u0000\u00B4\u0000\u00A4" +
-            "\u00AC\u00A9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" +
-            "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" +
-            "\u00FC\u0000\u00BC\u00C8\u0000\u0000\u0000\u00C0" +
-            "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u00AE\u0082" +
-            "\u00E9\u0083\u00E6\u00E8\u00ED\u00EA\u00EB\u00EC" +
-            "\u0000\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" +
-            "\u00AF\u00F4\u00F2\u00F3\u0086\u0000\u0000\u00A7" +
-            "\u0088\u0087\u0089\u008B\u008A\u008C\u00BE\u008D" +
-            "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" +
-            "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" +
-            "\u00BF\u009D\u009C\u009E\u009F\u0000\u0000\u00D8" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DA\u00DB" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00DC\u00DD\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00CE\u00CF\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00DE\u00DF" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00F6\u00FF\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB" +
-            "\u00FE\u00F7\u00FD\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B9\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000" +
-            "\u00D4\u00D5\u00E2\u0000\u00D2\u00D3\u00E3\u0000" +
-            "\u00A0\u00E0\u00A5\u0000\u0000\u0000\u00C9\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00AA\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00B6\u0000" +
-            "\u0000\u0000\u00C6\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00B8\u0000\u00B7\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u00C3\u0000" +
-            "\u0000\u0000\u00B0\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00AD\u0000\u0000\u0000" +
-            "\u00B2\u00B3\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00D7\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u00F0";
-
-    private final static short index1[] = {
-            0, 256, 461, 683, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            920, 1142, 1396, 403, 403, 1498, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
-            403, 403, 403, 403, 403, 403, 403, 403, 1701, 403, 403, 403, 403, 403, 403, 403,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/MacUkraine.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,361 +0,0 @@
-
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class MacUkraine
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public MacUkraine() {
-        super("x-MacUkraine", ExtendedCharsets.aliasesFor("x-MacUkraine"));
-    }
-
-    public String historicalName() {
-        return "MacUkraine";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof MacUkraine);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" +        // 0x80 - 0x87
-            "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" +        // 0x88 - 0x8F
-            "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" +        // 0x90 - 0x97
-            "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" +        // 0x98 - 0x9F
-            "\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406" +        // 0xA0 - 0xA7
-            "\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453" +        // 0xA8 - 0xAF
-            "\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408" +        // 0xB0 - 0xB7
-            "\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A" +        // 0xB8 - 0xBF
-            "\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB" +        // 0xC0 - 0xC7
-            "\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455" +        // 0xC8 - 0xCF
-            "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E" +        // 0xD0 - 0xD7
-            "\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F" +        // 0xD8 - 0xDF
-            "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" +        // 0xE0 - 0xE7
-            "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" +        // 0xE8 - 0xEF
-            "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" +        // 0xF0 - 0xF7
-            "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00CA\u0000\u0000\u00A3\u00FF\u0000\u0000\u00A4" +
-            "\u0000\u00A9\u0000\u00C7\u00C2\u0000\u00A8\u0000" +
-            "\u00A1\u00B1\u0000\u0000\u0000\u00B5\u00A6\u0000" +
-            "\u0000\u0000\u0000\u00C8\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00D6" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00DD\u00AB\u00AE\u00B8\u00C1" +
-            "\u00A7\u00BA\u00B7\u00BC\u00BE\u00CB\u00CD\u0000" +
-            "\u00D8\u00DA\u0080\u0081\u0082\u0083\u0084\u0085" +
-            "\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D" +
-            "\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095" +
-            "\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D" +
-            "\u009E\u009F\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" +
-            "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" +
-            "\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5" +
-            "\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD" +
-            "\u00FE\u00DF\u0000\u00DE\u00AC\u00AF\u00B9\u00CF" +
-            "\u00B4\u00BB\u00C0\u00BD\u00BF\u00CC\u00CE\u0000" +
-            "\u00D9\u00DB\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00A2\u00B6\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000\u00D4" +
-            "\u00D5\u0000\u0000\u00D2\u00D3\u00D7\u0000\u00A0" +
-            "\u0000\u00A5\u0000\u0000\u0000\u00C9\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DC" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AA\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u00C6\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u00C3\u0000\u0000" +
-            "\u0000\u00B0\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00C5\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u00AD\u0000\u0000\u0000\u00B2" +
-            "\u00B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-            0, 248, 395, 395, 650, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            887, 1121, 1371, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-            395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
-
-        };
-    }
-}
--- a/src/share/classes/sun/nio/cs/ext/TIS_620.java	Thu Jan 29 13:19:34 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-
-/*
- * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.nio.cs.ext;
-
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.SingleByteDecoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class TIS_620
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public TIS_620() {
-        super("TIS-620", ExtendedCharsets.aliasesFor("TIS-620"));
-    }
-
-    public String historicalName() {
-        return "TIS620";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof TIS_620));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public String getDecoderSingleByteMappings() {
-        return Decoder.byteToCharTable;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    private static class Decoder extends SingleByteDecoder {
-            public Decoder(Charset cs) {
-                super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x80 - 0x87
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x88 - 0x8F
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x90 - 0x97
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0x98 - 0x9F
-            "\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" +        // 0xA0 - 0xA7
-            "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" +        // 0xA8 - 0xAF
-            "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" +        // 0xB0 - 0xB7
-            "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" +        // 0xB8 - 0xBF
-            "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" +        // 0xC0 - 0xC7
-            "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" +        // 0xC8 - 0xCF
-            "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" +        // 0xD0 - 0xD7
-            "\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F" +        // 0xD8 - 0xDF
-            "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" +        // 0xE0 - 0xE7
-            "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F" +        // 0xE8 - 0xEF
-            "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" +        // 0xF0 - 0xF7
-            "\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" +        // 0xF8 - 0xFF
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +        // 0x00 - 0x07
-            "\b\t\n\u000B\f\r\u000E\u000F" +    // 0x08 - 0x0F
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +        // 0x10 - 0x17
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +        // 0x18 - 0x1F
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +        // 0x20 - 0x27
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +        // 0x28 - 0x2F
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +        // 0x30 - 0x37
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +        // 0x38 - 0x3F
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +        // 0x40 - 0x47
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +        // 0x48 - 0x4F
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +        // 0x50 - 0x57
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +    // 0x58 - 0x5F
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +        // 0x60 - 0x67
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +        // 0x68 - 0x6F
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +        // 0x70 - 0x77
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";         // 0x78 - 0x7F
-    }
-
-    private static class Encoder extends SingleByteEncoder {
-            public Encoder(Charset cs) {
-                super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-            }
-
-            private final static String index2 =
-
-                "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-                "\b\t\n\u000B\f\r\u000E\u000F" +
-                "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-                "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-                "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-                "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-                "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-                "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-                "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-                "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-                "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-                "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-                "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-                "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-                "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-                "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" +
-                "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" +
-                "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" +
-                "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" +
-                "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" +
-                "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" +
-                "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" +
-                "\u00D8\u00D9\u00DA\u0000\u0000\u0000\u0000\u00DF" +
-                "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" +
-                "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" +
-                "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" +
-                "\u00F8\u00F9\u00FA\u00FB\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-            private final static short index1[] = {
-                0, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 416, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-                161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-        };
-    }
-}
--- a/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	Thu Jan 29 18:33:52 2009 -0800
@@ -272,14 +272,14 @@
      */
     private Method[] getMemberMethods() {
         if (memberMethods == null) {
-            final Method[] mm = type.getDeclaredMethods();
-            AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                public Void run() {
-                    AccessibleObject.setAccessible(mm, true);
-                    return null;
-                }
-            });
-            memberMethods = mm;
+            memberMethods = AccessController.doPrivileged(
+                new PrivilegedAction<Method[]>() {
+                    public Method[] run() {
+                        final Method[] mm = type.getDeclaredMethods();
+                        AccessibleObject.setAccessible(mm, true);
+                        return mm;
+                    }
+                });
         }
         return memberMethods;
     }
--- a/src/share/classes/sun/security/jgss/GSSContextImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/jgss/GSSContextImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -284,7 +284,8 @@
         ByteArrayOutputStream bos = new ByteArrayOutputStream(100);
         acceptSecContext(new ByteArrayInputStream(inTok, offset, len),
                          bos);
-        return bos.toByteArray();
+        byte[] out = bos.toByteArray();
+        return (out.length == 0) ? null : out;
     }
 
     public void acceptSecContext(InputStream inStream,
--- a/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
@@ -413,13 +413,14 @@
                     // pull out the mechanism token
                     byte[] accept_token = targToken.getResponseToken();
                     if (accept_token == null) {
-                        // return wth failure
-                        throw new GSSException(errorCode, -1,
-                                        "mechansim token from server is null");
+                        if (!isMechContextEstablished()) {
+                            // return with failure
+                            throw new GSSException(errorCode, -1,
+                                    "mechanism token from server is null");
+                        }
+                    } else {
+                        mechToken = GSS_initSecContext(accept_token);
                     }
-
-                    mechToken = GSS_initSecContext(accept_token);
-
                     // verify MIC
                     if (!GSSUtil.useMSInterop()) {
                         byte[] micToken = targToken.getMechListMIC();
@@ -428,7 +429,6 @@
                                 "verification of MIC on MechList Failed!");
                         }
                     }
-
                     if (isMechContextEstablished()) {
                         state = STATE_DONE;
                         retVal = mechToken;
@@ -556,9 +556,6 @@
 
                 // get the token for mechanism
                 byte[] accept_token = GSS_acceptSecContext(mechToken);
-                if (accept_token == null) {
-                    valid = false;
-                }
 
                 // verify MIC
                 if (!GSSUtil.useMSInterop() && valid) {
--- a/src/share/classes/sun/security/provider/certpath/BasicChecker.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/provider/certpath/BasicChecker.java	Thu Jan 29 18:33:52 2009 -0800
@@ -162,7 +162,7 @@
             throw new CertPathValidatorException
                 (msg + " check failed", e, null, -1,
                  BasicReason.INVALID_SIGNATURE);
-        } catch (GeneralSecurityException e) {
+        } catch (Exception e) {
             throw new CertPathValidatorException(msg + " check failed", e);
         }
 
--- a/src/share/classes/sun/security/provider/certpath/OCSPResponse.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/provider/certpath/OCSPResponse.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -151,6 +151,10 @@
 
     private SingleResponse singleResponse;
 
+    // Maximum clock skew in milliseconds (10 minutes) allowed when checking
+    // validity of OCSP responses
+    private static final long MAX_CLOCK_SKEW = 600000;
+
     // an array of all of the CRLReasons (used in SingleResponse)
     private static CRLReason[] values = CRLReason.values();
 
@@ -583,7 +587,9 @@
                 }
             }
 
-            Date now = new Date();
+            long now = System.currentTimeMillis();
+            Date nowPlusSkew = new Date(now + MAX_CLOCK_SKEW);
+            Date nowMinusSkew = new Date(now - MAX_CLOCK_SKEW);
             if (DEBUG != null) {
                 String until = "";
                 if (nextUpdate != null) {
@@ -593,8 +599,8 @@
                     thisUpdate + until);
             }
             // Check that the test date is within the validity interval
-            if ((thisUpdate != null && now.before(thisUpdate)) ||
-                (nextUpdate != null && now.after(nextUpdate))) {
+            if ((thisUpdate != null && nowPlusSkew.before(thisUpdate)) ||
+                (nextUpdate != null && nowMinusSkew.after(nextUpdate))) {
 
                 if (DEBUG != null) {
                     DEBUG.println("Response is unreliable: its validity " +
--- a/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
@@ -256,10 +256,12 @@
                 // ignore
             }
         } finally {
-            // we call close on the underlying socket anyway, but be
-            // doubly sure all resources get released.
-            // note that we don't need to worry about self, the GC
-            // will finalize that separately
+            // We called close on the underlying socket above to
+            // make doubly sure all resources got released.  We
+            // don't finalize self in the case of overlain sockets,
+            // that's a different object which the GC will finalize
+            // separately.
+
             super.finalize();
         }
     }
--- a/src/share/classes/sun/security/ssl/CipherBox.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/ssl/CipherBox.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  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
@@ -486,4 +486,21 @@
 
         return newlen;
     }
+
+    /*
+     * Dispose of any intermediate state in the underlying cipher.
+     * For PKCS11 ciphers, this will release any attached sessions, and
+     * thus make finalization faster.
+     */
+    void dispose() {
+        try {
+            if (cipher != null) {
+                // ignore return value.
+                cipher.doFinal();
+            }
+        } catch (GeneralSecurityException e) {
+            // swallow for now.
+        }
+    }
+
 }
--- a/src/share/classes/sun/security/ssl/HelloExtensions.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/ssl/HelloExtensions.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-2008 Sun Microsystems, Inc.  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
@@ -218,7 +218,10 @@
             throws IOException {
         super(type);
         data = new byte[len];
-        s.read(data);
+        // s.read() does not handle 0-length arrays.
+        if (len != 0) {
+            s.read(data);
+        }
     }
 
     int length() {
--- a/src/share/classes/sun/security/ssl/SSLEngineImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/ssl/SSLEngineImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -547,6 +547,8 @@
 
         // ... create decompressor
 
+        CipherBox oldCipher = readCipher;
+
         try {
             readCipher = handshaker.newReadCipher();
             readMAC = handshaker.newReadMAC();
@@ -555,6 +557,16 @@
             throw (SSLException)new SSLException
                                 ("Algorithm missing:  ").initCause(e);
         }
+
+        /*
+         * Dispose of any intermediate state in the underlying cipher.
+         * For PKCS11 ciphers, this will release any attached sessions,
+         * and thus make finalization faster.
+         *
+         * Since MAC's doFinal() is called for every SSL/TLS packet, it's
+         * not necessary to do the same with MAC's.
+         */
+        oldCipher.dispose();
     }
 
     /*
@@ -572,6 +584,8 @@
 
         // ... create compressor
 
+        CipherBox oldCipher = writeCipher;
+
         try {
             writeCipher = handshaker.newWriteCipher();
             writeMAC = handshaker.newWriteMAC();
@@ -580,6 +594,9 @@
             throw (SSLException)new SSLException
                                 ("Algorithm missing:  ").initCause(e);
         }
+
+        // See comment above.
+        oldCipher.dispose();
     }
 
     /*
@@ -1231,6 +1248,9 @@
             break;
         }
 
+        // See comment in changeReadCiphers()
+        writeCipher.dispose();
+
         connectionState = cs_CLOSED;
     }
 
@@ -1271,6 +1291,10 @@
 
         closeOutboundInternal();
         inboundDone = true;
+
+        // See comment in changeReadCiphers()
+        readCipher.dispose();
+
         connectionState = cs_CLOSED;
     }
 
@@ -1457,6 +1481,10 @@
 
         connectionState = cs_CLOSED;
 
+        // See comment in changeReadCiphers()
+        readCipher.dispose();
+        writeCipher.dispose();
+
         if (cause instanceof RuntimeException) {
             throw (RuntimeException)cause;
         } else {
--- a/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  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
@@ -304,14 +304,18 @@
                          enabledCipherSuites, doClientAuth,
                          enableSessionCreation, enabledProtocols);
 
-            ServerHandshaker handshaker = tmp.getServerHandshaker();
+            try {
+                ServerHandshaker handshaker = tmp.getServerHandshaker();
 
-            for (Iterator t = enabledCipherSuites.iterator(); t.hasNext(); ) {
-                CipherSuite suite = (CipherSuite)t.next();
-                if (handshaker.trySetCipherSuite(suite)) {
-                    checkedEnabled = true;
-                    return;
+                for (Iterator t = enabledCipherSuites.iterator(); t.hasNext(); ) {
+                    CipherSuite suite = (CipherSuite)t.next();
+                    if (handshaker.trySetCipherSuite(suite)) {
+                        checkedEnabled = true;
+                        return;
+                    }
                 }
+            } finally {
+                tmp.closeSocket();
             }
 
             //
--- a/src/share/classes/sun/security/ssl/SSLSocketImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/security/ssl/SSLSocketImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1012,6 +1012,22 @@
      */
     ServerHandshaker getServerHandshaker() throws SSLException {
         initHandshaker();
+
+         // The connection state would have been set to cs_HANDSHAKE during the
+         // handshaking initializing, however the caller may not have the
+         // the low level connection's established, which is not consistent with
+         // the HANDSHAKE state. As if it is unconnected, we need to reset the
+         // connection state to cs_START.
+         if (!isConnected()) {
+             connectionState = cs_START;
+         }
+
+         // Make sure that we get a ServerHandshaker.
+         // This should never happen.
+         if (!(handshaker instanceof ServerHandshaker)) {
+             throw new SSLProtocolException("unexpected handshaker instance");
+         }
+
         return (ServerHandshaker)handshaker;
     }
 
@@ -1273,7 +1289,8 @@
         }
     }
 
-    private void closeSocket() throws IOException {
+    protected void closeSocket() throws IOException {
+
         if ((debug != null) && Debug.isOn("ssl")) {
             System.out.println(threadName() + ", called closeSocket()");
         }
@@ -1410,6 +1427,10 @@
                     waitForClose(false);
                 }
 
+                // See comment in changeReadCiphers()
+                readCipher.dispose();
+                writeCipher.dispose();
+
                 // state will be set to cs_CLOSED in the finally block below
 
                 break;
@@ -1616,6 +1637,11 @@
          * Clean up our side.
          */
         closeSocket();
+
+        // See comment in changeReadCiphers()
+        readCipher.dispose();
+        writeCipher.dispose();
+
         connectionState = (oldState == cs_APP_CLOSED) ? cs_APP_CLOSED
                                                       : cs_CLOSED;
         throw closeReason;
@@ -1746,6 +1772,8 @@
 
         // ... create decompressor
 
+        CipherBox oldCipher = readCipher;
+
         try {
             readCipher = handshaker.newReadCipher();
             readMAC = handshaker.newReadMAC();
@@ -1754,6 +1782,16 @@
             throw (SSLException)new SSLException
                                 ("Algorithm missing:  ").initCause(e);
         }
+
+        /*
+         * Dispose of any intermediate state in the underlying cipher.
+         * For PKCS11 ciphers, this will release any attached sessions,
+         * and thus make finalization faster.
+         *
+         * Since MAC's doFinal() is called for every SSL/TLS packet, it's
+         * not necessary to do the same with MAC's.
+         */
+        oldCipher.dispose();
     }
 
     // used by Handshaker
@@ -1766,6 +1804,8 @@
 
         // ... create compressor
 
+        CipherBox oldCipher = writeCipher;
+
         try {
             writeCipher = handshaker.newWriteCipher();
             writeMAC = handshaker.newWriteMAC();
@@ -1774,6 +1814,9 @@
             throw (SSLException)new SSLException
                                 ("Algorithm missing:  ").initCause(e);
         }
+
+        // See comment above.
+        oldCipher.dispose();
     }
 
     /*
--- a/src/share/classes/sun/swing/AccessibleMethod.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/swing/AccessibleMethod.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/swing/SwingLazyValue.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/swing/SwingLazyValue.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/swing/SwingUtilities2.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/swing/SwingUtilities2.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/tools/jar/Main.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/tools/jar/Main.java	Thu Jan 29 18:33:52 2009 -0800
@@ -46,9 +46,18 @@
     String zname = "";
     String[] files;
     String rootjar = null;
-    Hashtable filesTable = new Hashtable();
-    Vector paths = new Vector();
-    Vector v;
+
+    // An entryName(path)->File map generated during "expand", it helps to
+    // decide whether or not an existing entry in a jar file needs to be
+    // replaced, during the "update" operation.
+    Map<String, File> entryMap = new HashMap<String, File>();
+
+    // All files need to be added/updated.
+    Set<File> entries = new LinkedHashSet<File>();
+
+    // Directories specified by "-C" operation.
+    List<String> paths = new ArrayList<String>();
+
     CRC32 crc32 = new CRC32();
     /*
      * cflag: create
@@ -175,7 +184,8 @@
                         vflag = false;
                     }
                 }
-                create(new BufferedOutputStream(out), expand(files), manifest);
+                expand(null, files, false);
+                create(new BufferedOutputStream(out, 4096), manifest);
                 if (in != null) {
                     in.close();
                 }
@@ -198,8 +208,8 @@
                 }
                 InputStream manifest = (!Mflag && (mname != null)) ?
                     (new FileInputStream(mname)) : null;
-                expand(files);
-                boolean updateOk = update(in, new BufferedOutputStream(out), manifest);
+                expand(null, files, true);
+                boolean updateOk = update(in, new BufferedOutputStream(out), manifest, null);
                 if (ok) {
                     ok = updateOk;
                 }
@@ -354,7 +364,7 @@
                         while (dir.indexOf("//") > -1) {
                             dir = dir.replace("//", "/");
                         }
-                        paths.addElement(dir.replace(File.separatorChar, '/'));
+                        paths.add(dir.replace(File.separatorChar, '/'));
                         nameBuf[k++] = dir + args[++i];
                     } else {
                         nameBuf[k++] = args[i];
@@ -387,17 +397,7 @@
      * Expands list of files to process into full list of all files that
      * can be found by recursively descending directories.
      */
-    String[] expand(String[] files) {
-        v = new Vector();
-        expand(null, files, v, filesTable);
-        files = new String[v.size()];
-        for (int i = 0; i < files.length; i++) {
-            files[i] = ((File)v.elementAt(i)).getPath();
-        }
-        return files;
-    }
-
-    void expand(File dir, String[] files, Vector v, Hashtable t) {
+    void expand(File dir, String[] files, boolean isUpdate) {
         if (files == null) {
             return;
         }
@@ -409,17 +409,20 @@
                 f = new File(dir, files[i]);
             }
             if (f.isFile()) {
-                if (!t.contains(f)) {
-                    t.put(entryName(f.getPath()), f);
-                    v.addElement(f);
+                if (entries.add(f)) {
+                    if (isUpdate)
+                        entryMap.put(entryName(f.getPath()), f);
                 }
             } else if (f.isDirectory()) {
-                String dirPath = f.getPath();
-                dirPath = (dirPath.endsWith(File.separator)) ? dirPath :
-                    (dirPath + File.separator);
-                t.put(entryName(dirPath), f);
-                v.addElement(f);
-                expand(f, f.list(), v, t);
+                if (entries.add(f)) {
+                    if (isUpdate) {
+                        String dirPath = f.getPath();
+                        dirPath = (dirPath.endsWith(File.separator)) ? dirPath :
+                            (dirPath + File.separator);
+                        entryMap.put(entryName(dirPath), f);
+                    }
+                    expand(f, f.list(), isUpdate);
+                }
             } else {
                 error(formatMsg("error.nosuch.fileordir", String.valueOf(f)));
                 ok = false;
@@ -430,7 +433,7 @@
     /*
      * Creates a new JAR file.
      */
-    void create(OutputStream out, String[] files, Manifest manifest)
+    void create(OutputStream out, Manifest manifest)
         throws IOException
     {
         ZipOutputStream zos = new JarOutputStream(out);
@@ -455,8 +458,8 @@
             manifest.write(zos);
             zos.closeEntry();
         }
-        for (int i = 0; i < files.length; i++) {
-            addFile(zos, new File(files[i]));
+        for (File file: entries) {
+            addFile(zos, file);
         }
         zos.close();
     }
@@ -465,10 +468,9 @@
      * update an existing jar file.
      */
     boolean update(InputStream in, OutputStream out,
-                InputStream newManifest) throws IOException
+                   InputStream newManifest,
+                   JarIndex jarIndex) throws IOException
     {
-        Hashtable t = filesTable;
-        Vector v = this.v;
         ZipInputStream zis = new ZipInputStream(in);
         ZipOutputStream zos = new JarOutputStream(out);
         ZipEntry e = null;
@@ -477,8 +479,8 @@
         int n = 0;
         boolean updateOk = true;
 
-        if (t.containsKey(INDEX)) {
-            addIndex((JarIndex)t.get(INDEX), zos);
+        if (jarIndex != null) {
+            addIndex(jarIndex, zos);
         }
 
         // put the old entries first, replace if necessary
@@ -488,9 +490,8 @@
             boolean isManifestEntry = name.toUpperCase(
                                             java.util.Locale.ENGLISH).
                                         equals(MANIFEST);
-            if ((name.toUpperCase().equals(INDEX)
-                    && t.containsKey(INDEX))
-                    || (Mflag && isManifestEntry)) {
+            if ((name.toUpperCase().equals(INDEX) && jarIndex != null)
+                || (Mflag && isManifestEntry)) {
                 continue;
             } else if (isManifestEntry && ((newManifest != null) ||
                         (ename != null))) {
@@ -514,8 +515,7 @@
                 }
                 updateManifest(old, zos);
             } else {
-                if (!t.containsKey(name)) { // copy the old stuff
-
+                if (!entryMap.containsKey(name)) { // copy the old stuff
                     // do our own compression
                     ZipEntry e2 = new ZipEntry(name);
                     e2.setMethod(e.getMethod());
@@ -531,21 +531,17 @@
                         zos.write(buf, 0, n);
                     }
                 } else { // replace with the new files
-                    addFile(zos, (File)(t.get(name)));
-                    t.remove(name);
+                    File f = entryMap.get(name);
+                    addFile(zos, f);
+                    entryMap.remove(name);
+                    entries.remove(f);
                 }
             }
         }
-        t.remove(INDEX);
 
         // add the remaining new files
-        if (!t.isEmpty()) {
-            for (int i = 0; i < v.size(); i++) {
-                File f = (File)v.elementAt(i);
-                if (t.containsValue(f)) {
-                    addFile(zos, f);
-                }
-            }
+        for (File f: entries) {
+            addFile(zos, f);
         }
         if (!foundManifest) {
             if (newManifest != null) {
@@ -611,8 +607,7 @@
     private String entryName(String name) {
         name = name.replace(File.separatorChar, '/');
         String matchPath = "";
-        for (int i = 0; i < paths.size(); i++) {
-            String path = (String)paths.elementAt(i);
+        for (String path : paths) {
             if (name.startsWith(path) && (path.length() > matchPath.length())) {
                 matchPath = path;
             }
@@ -669,7 +664,6 @@
     void addFile(ZipOutputStream zos, File file) throws IOException {
         String name = file.getPath();
         boolean isDir = file.isDirectory();
-
         if (isDir) {
             name = name.endsWith(File.separator) ? name :
                 (name + File.separator);
@@ -704,7 +698,7 @@
         }
         zos.putNextEntry(e);
         if (!isDir) {
-            byte[] buf = new byte[1024];
+            byte[] buf = new byte[8192];
             int len;
             InputStream is = new BufferedInputStream(new FileInputStream(file));
             while ((len = is.read(buf, 0, buf.length)) != -1) {
@@ -749,7 +743,7 @@
      */
     private void crc32File(ZipEntry e, File f) throws IOException {
         InputStream is = new BufferedInputStream(new FileInputStream(f));
-        byte[] buf = new byte[1024];
+        byte[] buf = new byte[8192];
         crc32.reset();
         int r = 0;
         int nread = 0;
@@ -772,7 +766,7 @@
     void extract(InputStream in, String files[]) throws IOException {
         ZipInputStream zis = new ZipInputStream(in);
         ZipEntry e;
-        // Set of all directory entries specified in archive.  Dissallows
+        // Set of all directory entries specified in archive.  Disallows
         // null entries.  Disallows all entries if using pre-6.0 behavior.
         Set<ZipEntry> dirs = new HashSet<ZipEntry>() {
             public boolean add(ZipEntry e) {
@@ -897,17 +891,16 @@
         }
     }
 
-
     /**
      * Output the class index table to the INDEX.LIST file of the
      * root jar file.
      */
     void dumpIndex(String rootjar, JarIndex index) throws IOException {
-        filesTable.put(INDEX, index);
         File scratchFile = File.createTempFile("scratch", null, new File("."));
         File jarFile = new File(rootjar);
         boolean updateOk = update(new FileInputStream(jarFile),
-                new FileOutputStream(scratchFile), null);
+                                  new FileOutputStream(scratchFile),
+                                  null, index);
         jarFile.delete();
         if (!scratchFile.renameTo(jarFile)) {
             scratchFile.delete();
--- a/src/share/classes/sun/util/calendar/ZoneInfo.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/calendar/ZoneInfo.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1996-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_de.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_de.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_es.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_es.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_fr.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_fr.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_it.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_it.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_ja.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_ja.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_ko.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_ko.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_sv.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_sv.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc.  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
--- a/src/share/lib/management/management.properties	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/lib/management/management.properties	Thu Jan 29 18:33:52 2009 -0800
@@ -82,7 +82,7 @@
 #
 # com.sun.management.snmp.interface=<InetAddress>
 #      Specifies the local interface on which the SNMP agent will bind.
-#      This is usefull when running on machines which have several
+#      This is useful when running on machines which have several
 #      interfaces defined. It makes it possible to listen to a specific
 #      subnet accessible through that interface.
 #      Default for this property is "localhost".
@@ -144,6 +144,26 @@
 #
 
 #
+# ########## RMI connector settings for local management ##########
+#
+# com.sun.management.jmxremote.local.only=true|false
+#      Default for this property is true. (Case for true/false ignored)
+#      If this property is specified as true then the local JMX RMI connector
+#      server will only accept connection requests from clients running on
+#      the host where the out-of-the-box JMX management agent is running.
+#      In order to ensure backwards compatibility this property could be
+#      set to false. However, deploying the local management agent in this
+#      way is discouraged because the local JMX RMI connector server will
+#      accept connection requests from any client either local or remote.
+#      For remote management the remote JMX RMI connector server should
+#      be used instead with authentication and SSL/TLS encryption enabled.
+#
+
+# For allowing the local management agent accept local
+# and remote connection requests use the following line
+# com.sun.management.jmxremote.local.only=false
+
+#
 # ###################### RMI SSL #############################
 #
 # com.sun.management.jmxremote.ssl=true|false
--- a/src/share/native/java/io/io_util.c	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/native/java/io/io_util.c	Thu Jan 29 18:33:52 2009 -0800
@@ -25,6 +25,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <stddef.h>
 
 #include "jni.h"
 #include "jni_util.h"
@@ -34,9 +35,9 @@
 
 /* IO helper functions */
 
-int
+jint
 readSingle(JNIEnv *env, jobject this, jfieldID fid) {
-    int nread;
+    jint nread;
     char ret;
     FD fd = GET_FD(this, fid);
     if (fd == -1) {
@@ -49,7 +50,7 @@
     } else if (nread == JVM_IO_ERR) { /* error */
         JNU_ThrowIOExceptionWithLastError(env, "Read error");
     } else if (nread == JVM_IO_INTR) {
-        JNU_ThrowByName(env, "java/io/InterruptedIOException", 0);
+        JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL);
     }
     return ret & 0xFF;
 }
@@ -58,25 +59,35 @@
  */
 #define BUF_SIZE 8192
 
+/*
+ * Returns true if the array slice defined by the given offset and length
+ * is out of bounds.
+ */
+static int
+outOfBounds(JNIEnv *env, jint off, jint len, jbyteArray array) {
+    return ((off < 0) ||
+            (len < 0) ||
+            // We are very careful to avoid signed integer overflow,
+            // the result of which is undefined in C.
+            ((*env)->GetArrayLength(env, array) - off < len));
+}
 
-int
+jint
 readBytes(JNIEnv *env, jobject this, jbyteArray bytes,
           jint off, jint len, jfieldID fid)
 {
-    int nread, datalen;
+    jint nread;
     char stackBuf[BUF_SIZE];
-    char *buf = 0;
+    char *buf = NULL;
     FD fd;
 
     if (IS_NULL(bytes)) {
-        JNU_ThrowNullPointerException(env, 0);
+        JNU_ThrowNullPointerException(env, NULL);
         return -1;
     }
-    datalen = (*env)->GetArrayLength(env, bytes);
 
-    if ((off < 0) || (off > datalen) ||
-        (len < 0) || ((off + len) > datalen) || ((off + len) < 0)) {
-        JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", 0);
+    if (outOfBounds(env, off, len, bytes)) {
+        JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", NULL);
         return -1;
     }
 
@@ -84,8 +95,8 @@
         return 0;
     } else if (len > BUF_SIZE) {
         buf = malloc(len);
-        if (buf == 0) {
-            JNU_ThrowOutOfMemoryError(env, 0);
+        if (buf == NULL) {
+            JNU_ThrowOutOfMemoryError(env, NULL);
             return 0;
         }
     } else {
@@ -95,18 +106,18 @@
     fd = GET_FD(this, fid);
     if (fd == -1) {
         JNU_ThrowIOException(env, "Stream Closed");
-        return -1;
-    }
-
-    nread = IO_Read(fd, buf, len);
-    if (nread > 0) {
-        (*env)->SetByteArrayRegion(env, bytes, off, nread, (jbyte *)buf);
-    } else if (nread == JVM_IO_ERR) {
-        JNU_ThrowIOExceptionWithLastError(env, "Read error");
-    } else if (nread == JVM_IO_INTR) { /* EOF */
-        JNU_ThrowByName(env, "java/io/InterruptedIOException", 0);
-    } else { /* EOF */
         nread = -1;
+    } else {
+        nread = IO_Read(fd, buf, len);
+        if (nread > 0) {
+            (*env)->SetByteArrayRegion(env, bytes, off, nread, (jbyte *)buf);
+        } else if (nread == JVM_IO_ERR) {
+            JNU_ThrowIOExceptionWithLastError(env, "Read error");
+        } else if (nread == JVM_IO_INTR) {
+            JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL);
+        } else { /* EOF */
+            nread = -1;
+        }
     }
 
     if (buf != stackBuf) {
@@ -117,8 +128,9 @@
 
 void
 writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid) {
-    char c = byte;
-    int n;
+    // Discard the 24 high-order bits of byte. See OutputStream#write(int)
+    char c = (char) byte;
+    jint n;
     FD fd = GET_FD(this, fid);
     if (fd == -1) {
         JNU_ThrowIOException(env, "Stream Closed");
@@ -128,28 +140,26 @@
     if (n == JVM_IO_ERR) {
         JNU_ThrowIOExceptionWithLastError(env, "Write error");
     } else if (n == JVM_IO_INTR) {
-        JNU_ThrowByName(env, "java/io/InterruptedIOException", 0);
+        JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL);
     }
 }
 
 void
 writeBytes(JNIEnv *env, jobject this, jbyteArray bytes,
-          jint off, jint len, jfieldID fid)
+           jint off, jint len, jfieldID fid)
 {
-    int n, datalen;
+    jint n;
     char stackBuf[BUF_SIZE];
-    char *buf = 0;
+    char *buf = NULL;
     FD fd;
 
     if (IS_NULL(bytes)) {
-        JNU_ThrowNullPointerException(env, 0);
+        JNU_ThrowNullPointerException(env, NULL);
         return;
     }
-    datalen = (*env)->GetArrayLength(env, bytes);
 
-    if ((off < 0) || (off > datalen) ||
-        (len < 0) || ((off + len) > datalen) || ((off + len) < 0)) {
-        JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", 0);
+    if (outOfBounds(env, off, len, bytes)) {
+        JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", NULL);
         return;
     }
 
@@ -157,8 +167,8 @@
         return;
     } else if (len > BUF_SIZE) {
         buf = malloc(len);
-        if (buf == 0) {
-            JNU_ThrowOutOfMemoryError(env, 0);
+        if (buf == NULL) {
+            JNU_ThrowOutOfMemoryError(env, NULL);
             return;
         }
     } else {
@@ -180,7 +190,7 @@
                 JNU_ThrowIOExceptionWithLastError(env, "Write error");
                 break;
             } else if (n == JVM_IO_INTR) {
-                JNU_ThrowByName(env, "java/io/InterruptedIOException", 0);
+                JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL);
                 break;
             }
             off += n;
@@ -196,19 +206,19 @@
 throwFileNotFoundException(JNIEnv *env, jstring path)
 {
     char buf[256];
-    int n;
+    jint n;
     jobject x;
     jstring why = NULL;
 
     n = JVM_GetLastErrorString(buf, sizeof(buf));
     if (n > 0) {
-    why = JNU_NewStringPlatform(env, buf);
+        why = JNU_NewStringPlatform(env, buf);
     }
     x = JNU_NewObjectByName(env,
-                "java/io/FileNotFoundException",
-                "(Ljava/lang/String;Ljava/lang/String;)V",
-                path, why);
+                            "java/io/FileNotFoundException",
+                            "(Ljava/lang/String;Ljava/lang/String;)V",
+                            path, why);
     if (x != NULL) {
-    (*env)->Throw(env, x);
+        (*env)->Throw(env, x);
     }
 }
--- a/src/share/native/java/io/io_util.h	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/native/java/io/io_util.h	Thu Jan 29 18:33:52 2009 -0800
@@ -38,9 +38,9 @@
  * IO helper functions
  */
 
-int readSingle(JNIEnv *env, jobject this, jfieldID fid);
-int readBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off,
-              jint len, jfieldID fid);
+jint readSingle(JNIEnv *env, jobject this, jfieldID fid);
+jint readBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off,
+               jint len, jfieldID fid);
 void writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid);
 void writeBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off,
                 jint len, jfieldID fid);
--- a/src/share/native/java/util/zip/zip_util.c	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/native/java/util/zip/zip_util.c	Thu Jan 29 18:33:52 2009 -0800
@@ -273,8 +273,8 @@
 /*
  * Searches for end of central directory (END) header. The contents of
  * the END header will be read and placed in endbuf. Returns the file
- * position of the END header, otherwise returns 0 if the END header
- * was not found or -1 if an error occurred.
+ * position of the END header, otherwise returns -1 if the END header
+ * was not found or an error occurred.
  */
 static jlong
 findEND(jzfile *zip, void *endbuf)
@@ -314,7 +314,7 @@
             }
         }
     }
-    return 0; /* END header not found */
+    return -1; /* END header not found */
 }
 
 /*
@@ -460,9 +460,8 @@
 
 /*
  * Reads zip file central directory. Returns the file position of first
- * CEN header, otherwise returns 0 if central directory not found or -1
- * if an error occurred. If zip->msg != NULL then the error was a zip
- * format error and zip->msg has the error text.
+ * CEN header, otherwise returns -1 if an error occured. If zip->msg != NULL
+ * then the error was a zip format error and zip->msg has the error text.
  * Always pass in -1 for knownTotal; it's used for a recursive call.
  */
 static jlong
@@ -488,9 +487,9 @@
 
     /* Get position of END header */
     if ((endpos = findEND(zip, endbuf)) == -1)
-        return -1; /* system error */
+        return -1; /* no END header or system error */
 
-    if (endpos == 0) return 0;  /* END header not found */
+    if (endpos == 0) return 0;  /* only END header present */
 
     freeCEN(zip);
 
--- a/src/share/native/sun/font/bidi/ubidi.c	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/share/native/sun/font/bidi/ubidi.c	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2000-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 2000-2008 Sun Microsystems, Inc.  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
--- a/src/solaris/classes/sun/net/www/protocol/http/NTLMAuthentication.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/solaris/classes/sun/net/www/protocol/http/NTLMAuthentication.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
--- a/src/solaris/classes/sun/nio/ch/DevPollSelectorImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/solaris/classes/sun/nio/ch/DevPollSelectorImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -46,15 +46,15 @@
     // The poll object
     DevPollArrayWrapper pollWrapper;
 
-    // The number of valid channels in this Selector's poll array
-    private int totalChannels;
-
     // Maps from file descriptors to keys
     private Map<Integer,SelectionKeyImpl> fdToKey;
 
     // True if this Selector has been closed
     private boolean closed = false;
 
+    // Lock for close/cleanup
+    private Object closeLock = new Object();
+
     // Lock for interrupt triggering and clearing
     private Object interruptLock = new Object();
     private boolean interruptTriggered = false;
@@ -72,7 +72,6 @@
         pollWrapper = new DevPollArrayWrapper();
         pollWrapper.initInterrupt(fd0, fd1);
         fdToKey = new HashMap<Integer,SelectionKeyImpl>();
-        totalChannels = 1;
     }
 
     protected int doSelect(long timeout)
@@ -131,45 +130,39 @@
     }
 
     protected void implClose() throws IOException {
-        if (!closed) {
-            closed = true;
-
-            // prevent further wakeup
-            synchronized (interruptLock) {
-                interruptTriggered = true;
-            }
+        if (closed)
+            return;
+        closed = true;
 
-            FileDispatcher.closeIntFD(fd0);
-            FileDispatcher.closeIntFD(fd1);
-            if (pollWrapper != null) {
+        // prevent further wakeup
+        synchronized (interruptLock) {
+            interruptTriggered = true;
+        }
 
-                pollWrapper.release(fd0);
-                pollWrapper.closeDevPollFD();
-                pollWrapper = null;
-                selectedKeys = null;
+        FileDispatcher.closeIntFD(fd0);
+        FileDispatcher.closeIntFD(fd1);
 
-                // Deregister channels
-                Iterator i = keys.iterator();
-                while (i.hasNext()) {
-                    SelectionKeyImpl ski = (SelectionKeyImpl)i.next();
-                    deregister(ski);
-                    SelectableChannel selch = ski.channel();
-                    if (!selch.isOpen() && !selch.isRegistered())
-                        ((SelChImpl)selch).kill();
-                    i.remove();
-                }
-                totalChannels = 0;
+        pollWrapper.release(fd0);
+        pollWrapper.closeDevPollFD();
+        selectedKeys = null;
 
-            }
-            fd0 = -1;
-            fd1 = -1;
+        // Deregister channels
+        Iterator i = keys.iterator();
+        while (i.hasNext()) {
+            SelectionKeyImpl ski = (SelectionKeyImpl)i.next();
+            deregister(ski);
+            SelectableChannel selch = ski.channel();
+            if (!selch.isOpen() && !selch.isRegistered())
+                ((SelChImpl)selch).kill();
+            i.remove();
         }
+        fd0 = -1;
+        fd1 = -1;
     }
 
     protected void implRegister(SelectionKeyImpl ski) {
         int fd = IOUtil.fdVal(ski.channel.getFD());
         fdToKey.put(Integer.valueOf(fd), ski);
-        totalChannels++;
         keys.add(ski);
     }
 
@@ -179,7 +172,6 @@
         int fd = ski.channel.getFDVal();
         fdToKey.remove(Integer.valueOf(fd));
         pollWrapper.release(fd);
-        totalChannels--;
         ski.setIndex(-1);
         keys.remove(ski);
         selectedKeys.remove(ski);
@@ -190,6 +182,8 @@
     }
 
     void putEventOps(SelectionKeyImpl sk, int ops) {
+        if (closed)
+            throw new ClosedSelectorException();
         int fd = IOUtil.fdVal(sk.channel.getFD());
         pollWrapper.setInterest(fd, ops);
     }
--- a/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -31,7 +31,6 @@
 import java.util.*;
 import sun.misc.*;
 
-
 /**
  * An implementation of Selector for Linux 2.6+ kernels that uses
  * the epoll event notification facility.
@@ -51,7 +50,7 @@
     private Map<Integer,SelectionKeyImpl> fdToKey;
 
     // True if this Selector has been closed
-    private boolean closed = false;
+    private volatile boolean closed = false;
 
     // Lock for interrupt triggering and clearing
     private Object interruptLock = new Object();
@@ -128,40 +127,41 @@
     }
 
     protected void implClose() throws IOException {
-        if (!closed) {
-            closed = true;
+        if (closed)
+            return;
+        closed = true;
 
-            // prevent further wakeup
-            synchronized (interruptLock) {
-                interruptTriggered = true;
-            }
+        // prevent further wakeup
+        synchronized (interruptLock) {
+            interruptTriggered = true;
+        }
 
-            FileDispatcher.closeIntFD(fd0);
-            FileDispatcher.closeIntFD(fd1);
-            if (pollWrapper != null) {
+        FileDispatcher.closeIntFD(fd0);
+        FileDispatcher.closeIntFD(fd1);
 
-                pollWrapper.release(fd0);
-                pollWrapper.closeEPollFD();
-                pollWrapper = null;
-                selectedKeys = null;
+        pollWrapper.release(fd0);
+        pollWrapper.closeEPollFD();
+        // it is possible
+        selectedKeys = null;
 
-                // Deregister channels
-                Iterator i = keys.iterator();
-                while (i.hasNext()) {
-                    SelectionKeyImpl ski = (SelectionKeyImpl)i.next();
-                    deregister(ski);
-                    SelectableChannel selch = ski.channel();
-                    if (!selch.isOpen() && !selch.isRegistered())
-                        ((SelChImpl)selch).kill();
-                    i.remove();
-                }
-            }
-            fd0 = -1;
-            fd1 = -1;
+        // Deregister channels
+        Iterator i = keys.iterator();
+        while (i.hasNext()) {
+            SelectionKeyImpl ski = (SelectionKeyImpl)i.next();
+            deregister(ski);
+            SelectableChannel selch = ski.channel();
+            if (!selch.isOpen() && !selch.isRegistered())
+                ((SelChImpl)selch).kill();
+            i.remove();
         }
+
+        fd0 = -1;
+        fd1 = -1;
     }
 
     protected void implRegister(SelectionKeyImpl ski) {
+        if (closed)
+            throw new ClosedSelectorException();
         int fd = IOUtil.fdVal(ski.channel.getFD());
         fdToKey.put(Integer.valueOf(fd), ski);
         pollWrapper.add(fd);
@@ -183,6 +183,8 @@
     }
 
     void putEventOps(SelectionKeyImpl sk, int ops) {
+        if (closed)
+            throw new ClosedSelectorException();
         int fd = IOUtil.fdVal(sk.channel.getFD());
         pollWrapper.setInterest(fd, ops);
     }
--- a/src/windows/bin/java_md.c	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/windows/bin/java_md.c	Thu Jan 29 18:33:52 2009 -0800
@@ -41,7 +41,6 @@
 
 #define JVM_DLL "jvm.dll"
 #define JAVA_DLL "java.dll"
-#define CRT_DLL "msvcr71.dll"
 
 /*
  * Prototypes.
@@ -206,7 +205,15 @@
      * assumed to be present in the "JRE path" directory.  If it is not found
      * there (or "JRE path" fails to resolve), skip the explicit load and let
      * nature take its course, which is likely to be a failure to execute.
+     *
+     * (NOTE: the above statement is only true for Visual Studio 2003 and
+     *  msvcr71.dll.)
      */
+#ifdef _MSC_VER
+#if _MSC_VER < 1400
+#define CRT_DLL "msvcr71.dll"
+#endif
+#ifdef CRT_DLL
     if (GetJREPath(crtpath, MAXPATHLEN)) {
         (void)JLI_StrCat(crtpath, "\\bin\\" CRT_DLL);   /* Add crt dll */
         JLI_TraceLauncher("CRT path is %s\n", crtpath);
@@ -217,6 +224,8 @@
             }
         }
     }
+#endif /* CRT_DLL */
+#endif /* _MSC_VER */
 
     /* Load the Java VM DLL */
     if ((handle = LoadLibrary(jvmpath)) == 0) {
--- a/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java	Thu Jan 29 18:33:52 2009 -0800
@@ -80,6 +80,9 @@
     // File descriptors corresponding to source and sink
     private final int wakeupSourceFd, wakeupSinkFd;
 
+    // Lock for close cleanup
+    private Object closeLock = new Object();
+
     // Maps file descriptors to their indices in  pollArray
     private final static class FdMap extends HashMap<Integer, MapEntry> {
         static final long serialVersionUID = 0L;
@@ -473,42 +476,48 @@
     }
 
     protected void implClose() throws IOException {
-        if (channelArray != null) {
-            if (pollWrapper != null) {
-                // prevent further wakeup
-                synchronized (interruptLock) {
-                    interruptTriggered = true;
-                }
-                wakeupPipe.sink().close();
-                wakeupPipe.source().close();
-                for(int i = 1; i < totalChannels; i++) { // Deregister channels
-                    if (i % MAX_SELECTABLE_FDS != 0) { // skip wakeupEvent
-                        deregister(channelArray[i]);
-                        SelectableChannel selch = channelArray[i].channel();
-                        if (!selch.isOpen() && !selch.isRegistered())
-                            ((SelChImpl)selch).kill();
+        synchronized (closeLock) {
+            if (channelArray != null) {
+                if (pollWrapper != null) {
+                    // prevent further wakeup
+                    synchronized (interruptLock) {
+                        interruptTriggered = true;
                     }
-                }
-                pollWrapper.free();
-                pollWrapper = null;
-                selectedKeys = null;
-                channelArray = null;
-                threads.clear();
-                // Call startThreads. All remaining helper threads now exit,
-                // since threads.size() = 0;
-                startLock.startThreads();
+                    wakeupPipe.sink().close();
+                    wakeupPipe.source().close();
+                    for(int i = 1; i < totalChannels; i++) { // Deregister channels
+                        if (i % MAX_SELECTABLE_FDS != 0) { // skip wakeupEvent
+                            deregister(channelArray[i]);
+                            SelectableChannel selch = channelArray[i].channel();
+                            if (!selch.isOpen() && !selch.isRegistered())
+                                ((SelChImpl)selch).kill();
+                        }
+                    }
+                    pollWrapper.free();
+                    pollWrapper = null;
+                     selectedKeys = null;
+                     channelArray = null;
+                     threads.clear();
+                     // Call startThreads. All remaining helper threads now exit,
+                     // since threads.size() = 0;
+                     startLock.startThreads();
+                 }
             }
         }
     }
 
     protected void implRegister(SelectionKeyImpl ski) {
-        growIfNeeded();
-        channelArray[totalChannels] = ski;
-        ski.setIndex(totalChannels);
-        fdMap.put(ski);
-        keys.add(ski);
-        pollWrapper.addEntry(totalChannels, ski);
-        totalChannels++;
+        synchronized (closeLock) {
+            if (pollWrapper == null)
+                throw new ClosedSelectorException();
+            growIfNeeded();
+            channelArray[totalChannels] = ski;
+            ski.setIndex(totalChannels);
+            fdMap.put(ski);
+            keys.add(ski);
+            pollWrapper.addEntry(totalChannels, ski);
+            totalChannels++;
+        }
     }
 
     private void growIfNeeded() {
@@ -554,7 +563,11 @@
     }
 
     void putEventOps(SelectionKeyImpl sk, int ops) {
-        pollWrapper.putEventOps(sk.getIndex(), ops);
+        synchronized (closeLock) {
+            if (pollWrapper == null)
+                throw new ClosedSelectorException();
+            pollWrapper.putEventOps(sk.getIndex(), ops);
+        }
     }
 
     public Selector wakeup() {
--- a/src/windows/native/java/lang/java_props_md.c	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/windows/native/java/lang/java_props_md.c	Thu Jan 29 18:33:52 2009 -0800
@@ -38,6 +38,12 @@
 #define VER_PLATFORM_WIN32_WINDOWS 1
 #endif
 
+#ifndef PROCESSOR_ARCHITECTURE_AMD64
+#define PROCESSOR_ARCHITECTURE_AMD64 9
+#endif
+
+typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
+
 #define SHELL_KEY "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"
 
 /* Encodings for Windows language groups. According to
@@ -674,9 +680,22 @@
     {
         char buf[100];
         OSVERSIONINFOEX ver;
+        SYSTEM_INFO si;
+        PGNSI pGNSI;
+
         ver.dwOSVersionInfoSize = sizeof(ver);
         GetVersionEx((OSVERSIONINFO *) &ver);
 
+        ZeroMemory(&si, sizeof(SYSTEM_INFO));
+        // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
+        pGNSI = (PGNSI) GetProcAddress(
+                GetModuleHandle(TEXT("kernel32.dll")),
+                "GetNativeSystemInfo");
+        if(NULL != pGNSI)
+            pGNSI(&si);
+        else
+            GetSystemInfo(&si);
+
         /*
          * From msdn page on OSVERSIONINFOEX, current as of this
          * writing, decoding of dwMajorVersion and dwMinorVersion.
@@ -690,9 +709,14 @@
          * Windows 3.51                 3               51
          * Windows NT 4.0               4               0
          * Windows 2000                 5               0
-         * Windows XP                   5               1
+         * Windows XP 32 bit            5               1
          * Windows Server 2003 family   5               2
+         * Windows XP 64 bit            5               2
+         *       where ((&ver.wServicePackMinor) + 2) = 1
+         *       and  si.wProcessorArchitecture = 9
          * Windows Vista family         6               0
+         * Windows 2008                 6               0
+         *       where ((&ver.wServicePackMinor) + 2) = 1
          *
          * This mapping will presumably be augmented as new Windows
          * versions are released.
@@ -720,7 +744,25 @@
                 switch (ver.dwMinorVersion) {
                 case  0: sprops.os_name = "Windows 2000";         break;
                 case  1: sprops.os_name = "Windows XP";           break;
-                case  2: sprops.os_name = "Windows 2003";         break;
+                case  2:
+                   /*
+                    * From MSDN OSVERSIONINFOEX and SYSTEM_INFO documentation:
+                    *
+                    * "Because the version numbers for Windows Server 2003
+                    * and Windows XP 6u4 bit are identical, you must also test
+                    * whether the wProductType member is VER_NT_WORKSTATION.
+                    * and si.wProcessorArchitecture is
+                    * PROCESSOR_ARCHITECTURE_AMD64 (which is 9)
+                    * If it is, the operating system is Windows XP 64 bit;
+                    * otherwise, it is Windows Server 2003."
+                    */
+                    if(ver.wProductType == VER_NT_WORKSTATION &&
+                       si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {
+                        sprops.os_name = "Windows XP"; /* 64 bit */
+                    } else {
+                        sprops.os_name = "Windows 2003";
+                    }
+                    break;
                 default: sprops.os_name = "Windows NT (unknown)"; break;
                 }
             } else if (ver.dwMajorVersion == 6) {
--- a/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c	Thu Jan 29 13:19:34 2009 +0300
+++ b/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c	Thu Jan 29 18:33:52 2009 -0800
@@ -345,7 +345,6 @@
     DataBlock data;
     DataBlock* pData;
     DWORD* pCode;
-    DWORD numBytes;
     DWORD stubLen;
     HANDLE hProcess, hThread;
     jint argsLen, i;
@@ -400,7 +399,7 @@
         JNU_ThrowIOExceptionWithLastError(env, "VirtualAllocEx failed");
         return;
     }
-    WriteProcessMemory( hProcess, (LPVOID)pData, (LPVOID)&data, (DWORD)sizeof(DataBlock), &numBytes );
+    WriteProcessMemory( hProcess, (LPVOID)pData, (LPCVOID)&data, (SIZE_T)sizeof(DataBlock), NULL );
 
 
     stubLen = (DWORD)(*env)->GetArrayLength(env, stub);
@@ -412,7 +411,7 @@
         VirtualFreeEx(hProcess, pData, 0, MEM_RELEASE);
         return;
     }
-    WriteProcessMemory( hProcess, (LPVOID)pCode, (LPVOID)stubCode, (DWORD)stubLen, &numBytes );
+    WriteProcessMemory( hProcess, (LPVOID)pCode, (LPCVOID)stubCode, (SIZE_T)stubLen, NULL );
     if (isCopy) {
         (*env)->ReleaseByteArrayElements(env, stub, stubCode, JNI_ABORT);
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/com/sun/net/httpserver/bugs/FixedLengthInputStream.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6756771 6755625
+ * @summary  com.sun.net.httpserver.HttpServer should handle POSTs larger than 2Gig
+ */
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.net.InetSocketAddress;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.Socket;
+import java.util.logging.*;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+
+public class FixedLengthInputStream
+{
+    static final long POST_SIZE = 4L * 1024L * 1024L * 1024L; // 4Gig
+
+    void test(String[] args) throws IOException {
+        HttpServer httpServer = startHttpServer();
+        int port = httpServer.getAddress().getPort();
+        try {
+            URL url = new URL("http://localhost:" + port + "/flis/");
+            HttpURLConnection uc = (HttpURLConnection)url.openConnection();
+            uc.setDoOutput(true);
+            uc.setRequestMethod("POST");
+            uc.setFixedLengthStreamingMode(POST_SIZE);
+            OutputStream os = uc.getOutputStream();
+
+            /* create a 32K byte array with data to POST */
+            int thirtyTwoK = 32 * 1024;
+            byte[] ba = new byte[thirtyTwoK];
+            for (int i =0; i<thirtyTwoK; i++)
+                ba[i] = (byte)i;
+
+            long times = POST_SIZE / thirtyTwoK;
+            for (int i=0; i<times; i++) {
+                os.write(ba);
+            }
+
+            os.close();
+            InputStream is = uc.getInputStream();
+            while(is.read(ba) != -1);
+            is.close();
+
+            pass();
+        } finally {
+            httpServer.stop(0);
+        }
+    }
+
+    /**
+     * Http Server
+     */
+    HttpServer startHttpServer() throws IOException {
+        if (debug) {
+            Logger logger =
+            Logger.getLogger("com.sun.net.httpserver");
+            Handler outHandler = new StreamHandler(System.out,
+                                     new SimpleFormatter());
+            outHandler.setLevel(Level.FINEST);
+            logger.setLevel(Level.FINEST);
+            logger.addHandler(outHandler);
+        }
+        HttpServer httpServer = HttpServer.create(new InetSocketAddress(0), 0);
+        httpServer.createContext("/flis/", new MyHandler(POST_SIZE));
+        httpServer.start();
+        return httpServer;
+    }
+
+    class MyHandler implements HttpHandler {
+        static final int BUFFER_SIZE = 32 * 1024;
+        long expected;
+
+        MyHandler(long expected){
+            this.expected = expected;
+        }
+
+        @Override
+        public void handle(HttpExchange t) throws IOException {
+            InputStream is = t.getRequestBody();
+            byte[] ba = new byte[BUFFER_SIZE];
+            int read;
+            long count = 0L;
+            while((read = is.read(ba)) != -1) {
+                count += read;
+            }
+            is.close();
+
+            check(count == expected, "Expected: " + expected + ", received "
+                    + count);
+
+            debug("Received " + count + " bytes");
+
+            t.sendResponseHeaders(200, -1);
+            t.close();
+        }
+    }
+
+         //--------------------- Infrastructure ---------------------------
+    boolean debug = true;
+    volatile int passed = 0, failed = 0;
+    void pass() {passed++;}
+    void fail() {failed++; Thread.dumpStack();}
+    void fail(String msg) {System.err.println(msg); fail();}
+    void unexpected(Throwable t) {failed++; t.printStackTrace();}
+    void check(boolean cond) {if (cond) pass(); else fail();}
+    void check(boolean cond, String failMessage) {if (cond) pass(); else fail(failMessage);}
+    void debug(String message) {if(debug) { System.out.println(message); }  }
+    public static void main(String[] args) throws Throwable {
+        Class<?> k = new Object(){}.getClass().getEnclosingClass();
+        try {k.getMethod("instanceMain",String[].class)
+                .invoke( k.newInstance(), (Object) args);}
+        catch (Throwable e) {throw e.getCause();}}
+    public void instanceMain(String[] args) throws Throwable {
+        try {test(args);} catch (Throwable t) {unexpected(t);}
+        System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+        if (failed > 0) throw new AssertionError("Some tests failed");}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/io/readBytes/MemoryLeak.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6791458
+ * @summary Reading from closed input files leaks native memory
+ */
+
+import java.io.*;
+
+public class MemoryLeak {
+    public static void main(String[] args) throws Throwable {
+        byte[] bytes = new byte[1 << 20];
+        String dir = System.getProperty("test.src", ".");
+        File testFile = new File(dir, "input.txt");
+        FileInputStream s = new FileInputStream(testFile);
+        s.close();
+        for (int i = 0; i < 10000; i++) {
+            try {
+                s.read(bytes);
+                throw new Error("expected IOException");
+            } catch (IOException _) {
+                /* OK */
+            } catch (OutOfMemoryError oome) {
+                System.out.printf("Got OutOfMemoryError, i=%d%n", i);
+                throw oome;
+            }
+        }
+    }
+}
--- a/test/java/io/readBytes/ReadBytesBounds.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/io/readBytes/ReadBytesBounds.java	Thu Jan 29 18:33:52 2009 -0800
@@ -22,107 +22,76 @@
  */
 
 /*
-  @test
-  @bug 4017728 4079849
-  @summary Check for correct Array Bounds check in read of FileInputStream and
-  RandomAccessFile
-  */
+ * @test
+ * @bug 4017728 4079849 6788196
+ * @summary Check for correct Array Bounds check in read of FileInputStream and
+ * RandomAccessFile
+ */
 
 import java.io.*;
 
-
 /*
- * The test calls the read(byte buf[] , int off , int len) of FileInputStream with
- * different values of off and len to see if the ArrayOutOfBoundsException is
- * thrown according to the JLS1.0 specification.  The read(...) method calls
- * readBytes(...) in native code(io_util.c).  The read(...) method in RandomAccessFile
- * also calls the same native method.  So one should see similar results.
+ * The test calls the read(byte buf[] , int off , int len) of
+ * FileInputStream with different values of off and len to see if the
+ * IndexOutOfBoundsException is thrown.  The read(...) method calls
+ * readBytes(...) in native code(io_util.c).  The read(...) method in
+ * RandomAccessFile also calls the same native method.  So one should
+ * see similar results.
  */
 
-
 public class ReadBytesBounds {
 
-    public static void main(String argv[]) throws Exception{
-
-        int num_test_cases = 12;
-        int off[] =     {-1 , -1 ,  0 , 0  , 33 , 33 , 0  , 32 , 32 , 4  , 1  , 0};
-        int len[] =     {-1 ,  0 , -1 , 33 , 0  , 4  , 32 , 0  , 4  , 16 , 31 , 0};
-        boolean results[] = { false ,  false ,  false , false  , false  , false  ,
-                              true  , true  , false  , true  , true  , true};
-
-
-        FileInputStream fis = null;
-        RandomAccessFile raf = null;
-        byte b[] = new byte[32];
-
-        int num_good = 0;
-        int num_bad = 0;
+    static final FileInputStream fis;
+    static final RandomAccessFile raf;
+    static final byte[] b = new byte[32];
 
-        String dir = System.getProperty("test.src", ".");
-        File testFile = new File(dir, "input.txt");
-        fis = new FileInputStream(testFile);
-        for(int i = 0; i < num_test_cases; i++) {
-
-            try {
-                int bytes_read = fis.read(b , off[i] , len[i]);
-            } catch(IndexOutOfBoundsException aiobe) {
-                if (results[i]) {
-                    throw new RuntimeException("Unexpected result");
-                }
-                else {
-                    num_good++;
-                }
-                continue;
-            }
+    static {
+        try {
+            String dir = System.getProperty("test.src", ".");
+            File testFile = new File(dir, "input.txt");
+            fis = new FileInputStream(testFile);
+            raf = new RandomAccessFile(testFile , "r");
+        } catch (Throwable t) {
+            throw new Error(t);
+        }
+    }
 
-            if (results[i]) {
-                num_good++;
-            }
-            else {
-                throw new RuntimeException("Unexpected result");
-            }
-
-        }
-        System.out.println("Results for FileInputStream.read");
-        System.out.println("\nTotal number of test cases = " + num_test_cases +
-                           "\nNumber succeded = " + num_good +
-                           "\nNumber failed   = " + num_bad);
-
-
-
-        num_good = 0;
-        num_bad = 0;
+    public static void main(String argv[]) throws Throwable {
+        byte b[] = new byte[32];
+        testRead(-1, -1, false);
+        testRead(-1,  0, false);
+        testRead( 0, -1, false);
+        testRead( 0, 33, false);
+        testRead(33,  0, false);
+        testRead(33,  4, false);
+        testRead( 0, 32, true);
+        testRead(32,  0, true);
+        testRead(32,  4, false);
+        testRead( 4, 16, true);
+        testRead( 1, 31, true);
+        testRead( 0,  0, true);
+        testRead(31,  Integer.MAX_VALUE, false);
+        testRead( 0,  Integer.MAX_VALUE, false);
+        testRead(-1,  Integer.MAX_VALUE, false);
+        testRead(-4,  Integer.MIN_VALUE, false);
+        testRead( 0,  Integer.MIN_VALUE, false);
+    }
 
-        raf = new RandomAccessFile(testFile , "r");
-        for(int i = 0; i < num_test_cases; i++) {
-
-            try {
-                int bytes_read = raf.read(b , off[i] , len[i]);
-            } catch(IndexOutOfBoundsException aiobe) {
-                if (results[i]) {
-                    throw new RuntimeException("Unexpected result");
-                }
-                else {
-                    num_good++;
-                }
-                continue;
-            }
-
-            if (results[i]) {
-                num_good++;
-            }
-            else {
-                throw new RuntimeException("Unexpected result");
-            }
-
+    static void testRead(int off, int len, boolean expected) throws Throwable {
+        System.err.printf("off=%d len=%d expected=%b%n", off, len, expected);
+        boolean result;
+        try {
+            fis.read(b, off, len);
+            raf.read(b, off, len);
+            result = true;
+        } catch (IndexOutOfBoundsException e) {
+            result = false;
         }
 
-        System.out.println("Results for RandomAccessFile.read");
-        System.out.println("\nTotal number of test cases = " + num_test_cases +
-                           "\nNumber succeded = " + num_good +
-                           "\nNumber failed   = " + num_bad);
-
-
+        if (result != expected) {
+            throw new RuntimeException
+                (String.format("Unexpected result off=%d len=%d expected=%b",
+                               off, len, expected));
+        }
     }
-
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/lang/annotation/ParameterAnnotations.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6761678
+ * @summary Check properties of Annotations returned from
+ * getParameterAnnotations, including freedom from security
+ * exceptions.
+ * @author Martin Buchholz
+ */
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.reflect.Method;
+import java.security.Permission;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.FIELD, ElementType.PARAMETER })
+@interface Named {
+  String value();
+}
+
+public class ParameterAnnotations {
+
+    // A security policy that differs from the default only in that it
+    // allows a security manager to be uninstalled.
+    static class MyPolicy extends Policy {
+        final Policy defaultPolicy;
+        MyPolicy(Policy defaultPolicy) {
+            this.defaultPolicy = defaultPolicy;
+        }
+        public boolean implies(ProtectionDomain pd, Permission p) {
+            return p.getName().equals("setSecurityManager") ||
+                defaultPolicy.implies(pd, p);
+        }
+    }
+
+    public void nop(@Named("foo") Object foo,
+                    @Named("bar") Object bar) {
+    }
+
+    void test(String[] args) throws Throwable {
+        // Test without a security manager
+        test1();
+
+        // Test with a security manager
+        Policy defaultPolicy = Policy.getPolicy();
+        Policy.setPolicy(new MyPolicy(defaultPolicy));
+        System.setSecurityManager(new SecurityManager());
+        try {
+            test1();
+        } finally {
+            System.setSecurityManager(null);
+            Policy.setPolicy(defaultPolicy);
+        }
+    }
+
+    void test1() throws Throwable {
+        for (Method m : thisClass.getMethods()) {
+            if (m.getName().equals("nop")) {
+                Annotation[][] ann = m.getParameterAnnotations();
+                equal(ann.length, 2);
+                Annotation foo = ann[0][0];
+                Annotation bar = ann[1][0];
+                equal(foo.toString(), "@Named(value=foo)");
+                equal(bar.toString(), "@Named(value=bar)");
+                check(foo.equals(foo));
+                check(! foo.equals(bar));
+            }
+        }
+    }
+
+    //--------------------- Infrastructure ---------------------------
+    volatile int passed = 0, failed = 0;
+    void pass() {passed++;}
+    void fail() {failed++; Thread.dumpStack();}
+    void fail(String msg) {System.err.println(msg); fail();}
+    void unexpected(Throwable t) {failed++; t.printStackTrace();}
+    void check(boolean cond) {if (cond) pass(); else fail();}
+    void equal(Object x, Object y) {
+        if (x == null ? y == null : x.equals(y)) pass();
+        else fail(x + " not equal to " + y);}
+    static Class<?> thisClass = new Object(){}.getClass().getEnclosingClass();
+    public static void main(String[] args) throws Throwable {
+        try {thisClass.getMethod("instanceMain",String[].class)
+                .invoke(thisClass.newInstance(), (Object) args);}
+        catch (Throwable e) {throw e.getCause();}}
+    public void instanceMain(String[] args) throws Throwable {
+        try {test(args);} catch (Throwable t) {unexpected(t);}
+        System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+        if (failed > 0) throw new AssertionError("Some tests failed");}
+}
--- a/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh	Thu Jan 29 18:33:52 2009 -0800
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# Copyright 1999-2002 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1999-2008 Sun Microsystems, Inc.  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
--- a/test/java/nio/Buffer/Basic-X.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/Basic-X.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -31,6 +31,7 @@
 #warn This file is preprocessed before being compiled
 
 import java.nio.*;
+import java.lang.reflect.Method;
 
 
 public class Basic$Type$
@@ -184,32 +185,57 @@
         b.position(p);
     }
 
+    private static void compact(Buffer b) {
+        try {
+            Class<?> cl = b.getClass();
+            Method m = cl.getDeclaredMethod("compact");
+            m.setAccessible(true);
+            m.invoke(b);
+        } catch (Exception e) {
+            fail(e.getMessage(), b);
+        }
+    }
+
+    private static void checkInvalidMarkException(final Buffer b) {
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+            public void run() {
+                b.mark();
+                compact(b);
+                b.reset();
+            }});
+    }
+
     private static void testViews(int level, ByteBuffer b, boolean direct) {
 
         ShortBuffer sb = b.asShortBuffer();
         BasicShort.test(level, sb, direct);
         checkBytes(b, new byte[] { 0, (byte)ic(0) });
+        checkInvalidMarkException(sb);
 
         CharBuffer cb = b.asCharBuffer();
         BasicChar.test(level, cb, direct);
         checkBytes(b, new byte[] { 0, (byte)ic(0) });
+        checkInvalidMarkException(cb);
 
         IntBuffer ib = b.asIntBuffer();
         BasicInt.test(level, ib, direct);
         checkBytes(b, new byte[] { 0, 0, 0, (byte)ic(0) });
+        checkInvalidMarkException(ib);
 
         LongBuffer lb = b.asLongBuffer();
         BasicLong.test(level, lb, direct);
         checkBytes(b, new byte[] { 0, 0, 0, 0, 0, 0, 0, (byte)ic(0) });
+        checkInvalidMarkException(lb);
 
         FloatBuffer fb = b.asFloatBuffer();
         BasicFloat.test(level, fb, direct);
         checkBytes(b, new byte[] { 0x42, (byte)0xc2, 0, 0 });
+        checkInvalidMarkException(fb);
 
         DoubleBuffer db = b.asDoubleBuffer();
         BasicDouble.test(level, db, direct);
         checkBytes(b, new byte[] { 0x40, 0x58, 0x40, 0, 0, 0, 0, 0 });
-
+        checkInvalidMarkException(db);
     }
 
     private static void testHet(int level, ByteBuffer b) {
@@ -288,8 +314,11 @@
         try {
             thunk.run();
         } catch (Throwable x) {
-            if (ex.isAssignableFrom(x.getClass()))
+            if (ex.isAssignableFrom(x.getClass())) {
                 caught = true;
+            } else {
+                fail(x.getMessage() + " not expected");
+            }
         }
         if (!caught)
             fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
 
         // Exceptions
 
-        boolean caught = false;
         relPut(b);
         b.limit(b.capacity() / 2);
         b.position(b.limit());
@@ -386,6 +414,14 @@
                     b.put(b.limit(), ($type$)42);
                 }});
 
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+                public void run() {
+                    b.position(0);
+                    b.mark();
+                    b.compact();
+                    b.reset();
+                }});
+
         // Values
 
         b.clear();
--- a/test/java/nio/Buffer/Basic.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/Basic.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -25,7 +25,7 @@
  * @summary Unit test for buffers
  * @bug 4413135 4414911 4416536 4416562 4418782 4471053 4472779 4490253 4523725
  *      4526177 4463011 4660660 4661219 4663521 4782970 4804304 4938424 6231529
- *      6221101 6234263 6535542 6591971
+ *      6221101 6234263 6535542 6591971 6593946
  * @author Mark Reinhold
  */
 
--- a/test/java/nio/Buffer/BasicByte.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/BasicByte.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -31,6 +31,7 @@
 // -- This file was mechanically generated: Do not edit! -- //
 
 import java.nio.*;
+import java.lang.reflect.Method;
 
 
 public class BasicByte
@@ -184,32 +185,57 @@
         b.position(p);
     }
 
+    private static void compact(Buffer b) {
+        try {
+            Class<?> cl = b.getClass();
+            Method m = cl.getDeclaredMethod("compact");
+            m.setAccessible(true);
+            m.invoke(b);
+        } catch (Exception e) {
+            fail(e.getMessage(), b);
+        }
+    }
+
+    private static void checkInvalidMarkException(final Buffer b) {
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+            public void run() {
+                b.mark();
+                compact(b);
+                b.reset();
+            }});
+    }
+
     private static void testViews(int level, ByteBuffer b, boolean direct) {
 
         ShortBuffer sb = b.asShortBuffer();
         BasicShort.test(level, sb, direct);
         checkBytes(b, new byte[] { 0, (byte)ic(0) });
+        checkInvalidMarkException(sb);
 
         CharBuffer cb = b.asCharBuffer();
         BasicChar.test(level, cb, direct);
         checkBytes(b, new byte[] { 0, (byte)ic(0) });
+        checkInvalidMarkException(cb);
 
         IntBuffer ib = b.asIntBuffer();
         BasicInt.test(level, ib, direct);
         checkBytes(b, new byte[] { 0, 0, 0, (byte)ic(0) });
+        checkInvalidMarkException(ib);
 
         LongBuffer lb = b.asLongBuffer();
         BasicLong.test(level, lb, direct);
         checkBytes(b, new byte[] { 0, 0, 0, 0, 0, 0, 0, (byte)ic(0) });
+        checkInvalidMarkException(lb);
 
         FloatBuffer fb = b.asFloatBuffer();
         BasicFloat.test(level, fb, direct);
         checkBytes(b, new byte[] { 0x42, (byte)0xc2, 0, 0 });
+        checkInvalidMarkException(fb);
 
         DoubleBuffer db = b.asDoubleBuffer();
         BasicDouble.test(level, db, direct);
         checkBytes(b, new byte[] { 0x40, 0x58, 0x40, 0, 0, 0, 0, 0 });
-
+        checkInvalidMarkException(db);
     }
 
     private static void testHet(int level, ByteBuffer b) {
@@ -288,8 +314,11 @@
         try {
             thunk.run();
         } catch (Throwable x) {
-            if (ex.isAssignableFrom(x.getClass()))
+            if (ex.isAssignableFrom(x.getClass())) {
                 caught = true;
+            } else {
+                fail(x.getMessage() + " not expected");
+            }
         }
         if (!caught)
             fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
 
         // Exceptions
 
-        boolean caught = false;
         relPut(b);
         b.limit(b.capacity() / 2);
         b.position(b.limit());
@@ -386,6 +414,14 @@
                     b.put(b.limit(), (byte)42);
                 }});
 
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+                public void run() {
+                    b.position(0);
+                    b.mark();
+                    b.compact();
+                    b.reset();
+                }});
+
         // Values
 
         b.clear();
--- a/test/java/nio/Buffer/BasicChar.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/BasicChar.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -31,6 +31,7 @@
 // -- This file was mechanically generated: Do not edit! -- //
 
 import java.nio.*;
+import java.lang.reflect.Method;
 
 
 public class BasicChar
@@ -283,13 +284,41 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
         boolean caught = false;
         try {
             thunk.run();
         } catch (Throwable x) {
-            if (ex.isAssignableFrom(x.getClass()))
+            if (ex.isAssignableFrom(x.getClass())) {
                 caught = true;
+            } else {
+                fail(x.getMessage() + " not expected");
+            }
         }
         if (!caught)
             fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
 
         // Exceptions
 
-        boolean caught = false;
         relPut(b);
         b.limit(b.capacity() / 2);
         b.position(b.limit());
@@ -386,6 +414,14 @@
                     b.put(b.limit(), (char)42);
                 }});
 
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+                public void run() {
+                    b.position(0);
+                    b.mark();
+                    b.compact();
+                    b.reset();
+                }});
+
         // Values
 
         b.clear();
--- a/test/java/nio/Buffer/BasicDouble.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/BasicDouble.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -31,6 +31,7 @@
 // -- This file was mechanically generated: Do not edit! -- //
 
 import java.nio.*;
+import java.lang.reflect.Method;
 
 
 public class BasicDouble
@@ -283,13 +284,41 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
         boolean caught = false;
         try {
             thunk.run();
         } catch (Throwable x) {
-            if (ex.isAssignableFrom(x.getClass()))
+            if (ex.isAssignableFrom(x.getClass())) {
                 caught = true;
+            } else {
+                fail(x.getMessage() + " not expected");
+            }
         }
         if (!caught)
             fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
 
         // Exceptions
 
-        boolean caught = false;
         relPut(b);
         b.limit(b.capacity() / 2);
         b.position(b.limit());
@@ -386,6 +414,14 @@
                     b.put(b.limit(), (double)42);
                 }});
 
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+                public void run() {
+                    b.position(0);
+                    b.mark();
+                    b.compact();
+                    b.reset();
+                }});
+
         // Values
 
         b.clear();
--- a/test/java/nio/Buffer/BasicFloat.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/BasicFloat.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -31,6 +31,7 @@
 // -- This file was mechanically generated: Do not edit! -- //
 
 import java.nio.*;
+import java.lang.reflect.Method;
 
 
 public class BasicFloat
@@ -283,13 +284,41 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
         boolean caught = false;
         try {
             thunk.run();
         } catch (Throwable x) {
-            if (ex.isAssignableFrom(x.getClass()))
+            if (ex.isAssignableFrom(x.getClass())) {
                 caught = true;
+            } else {
+                fail(x.getMessage() + " not expected");
+            }
         }
         if (!caught)
             fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
 
         // Exceptions
 
-        boolean caught = false;
         relPut(b);
         b.limit(b.capacity() / 2);
         b.position(b.limit());
@@ -386,6 +414,14 @@
                     b.put(b.limit(), (float)42);
                 }});
 
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+                public void run() {
+                    b.position(0);
+                    b.mark();
+                    b.compact();
+                    b.reset();
+                }});
+
         // Values
 
         b.clear();
--- a/test/java/nio/Buffer/BasicInt.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/BasicInt.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -31,6 +31,7 @@
 // -- This file was mechanically generated: Do not edit! -- //
 
 import java.nio.*;
+import java.lang.reflect.Method;
 
 
 public class BasicInt
@@ -283,13 +284,41 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
         boolean caught = false;
         try {
             thunk.run();
         } catch (Throwable x) {
-            if (ex.isAssignableFrom(x.getClass()))
+            if (ex.isAssignableFrom(x.getClass())) {
                 caught = true;
+            } else {
+                fail(x.getMessage() + " not expected");
+            }
         }
         if (!caught)
             fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
 
         // Exceptions
 
-        boolean caught = false;
         relPut(b);
         b.limit(b.capacity() / 2);
         b.position(b.limit());
@@ -386,6 +414,14 @@
                     b.put(b.limit(), (int)42);
                 }});
 
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+                public void run() {
+                    b.position(0);
+                    b.mark();
+                    b.compact();
+                    b.reset();
+                }});
+
         // Values
 
         b.clear();
--- a/test/java/nio/Buffer/BasicLong.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/BasicLong.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -31,6 +31,7 @@
 // -- This file was mechanically generated: Do not edit! -- //
 
 import java.nio.*;
+import java.lang.reflect.Method;
 
 
 public class BasicLong
@@ -283,13 +284,41 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
         boolean caught = false;
         try {
             thunk.run();
         } catch (Throwable x) {
-            if (ex.isAssignableFrom(x.getClass()))
+            if (ex.isAssignableFrom(x.getClass())) {
                 caught = true;
+            } else {
+                fail(x.getMessage() + " not expected");
+            }
         }
         if (!caught)
             fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
 
         // Exceptions
 
-        boolean caught = false;
         relPut(b);
         b.limit(b.capacity() / 2);
         b.position(b.limit());
@@ -386,6 +414,14 @@
                     b.put(b.limit(), (long)42);
                 }});
 
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+                public void run() {
+                    b.position(0);
+                    b.mark();
+                    b.compact();
+                    b.reset();
+                }});
+
         // Values
 
         b.clear();
--- a/test/java/nio/Buffer/BasicShort.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/BasicShort.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  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
@@ -31,6 +31,7 @@
 // -- This file was mechanically generated: Do not edit! -- //
 
 import java.nio.*;
+import java.lang.reflect.Method;
 
 
 public class BasicShort
@@ -283,13 +284,41 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
         boolean caught = false;
         try {
             thunk.run();
         } catch (Throwable x) {
-            if (ex.isAssignableFrom(x.getClass()))
+            if (ex.isAssignableFrom(x.getClass())) {
                 caught = true;
+            } else {
+                fail(x.getMessage() + " not expected");
+            }
         }
         if (!caught)
             fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
 
         // Exceptions
 
-        boolean caught = false;
         relPut(b);
         b.limit(b.capacity() / 2);
         b.position(b.limit());
@@ -386,6 +414,14 @@
                     b.put(b.limit(), (short)42);
                 }});
 
+        tryCatch(b, InvalidMarkException.class, new Runnable() {
+                public void run() {
+                    b.position(0);
+                    b.mark();
+                    b.compact();
+                    b.reset();
+                }});
+
         // Values
 
         b.clear();
--- a/test/java/nio/Buffer/genBasic.sh	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/genBasic.sh	Thu Jan 29 18:33:52 2009 -0800
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,10 +23,10 @@
 # have any questions.
 #
 
-SPP='sh ../../../../make/java/nio/spp.sh'
+javac -d . ../../../../make/tools/src/build/tools/spp/Spp.java
 
 gen() {
-  $SPP -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 <Basic-X.java >Basic$2.java
+    java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 <Basic-X.java >Basic$2.java
 }
 
 gen byte Byte Byte
@@ -36,3 +36,5 @@
 gen long Long Long
 gen float Float Float
 gen double Double Double
+
+rm -rf build
--- a/test/java/nio/Buffer/genCopyDirectMemory.sh	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/Buffer/genCopyDirectMemory.sh	Thu Jan 29 18:33:52 2009 -0800
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,10 +23,10 @@
 # have any questions.
 #
 
-SPP='sh ../../../../make/java/nio/spp.sh'
+javac -d . ../../../../make/tools/src/build/tools/spp/Spp.java > Spp.java
 
 gen() {
-  $SPP -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3<CopyDirect-X-Memory.java >CopyDirect$2Memory.java
+    java  build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3<CopyDirect-X-Memory.java >CopyDirect$2Memory.java
 }
 
 gen byte Byte Byte
@@ -37,3 +37,4 @@
 gen float Float Float
 gen double Double Double
 
+rm -rf build
--- a/test/java/nio/channels/Channels/Basic.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/nio/channels/Channels/Basic.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc.  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
@@ -22,12 +22,13 @@
  */
 
 /* @test
- * @bug 4417152 4481572 6248930
+ * @bug 4417152 4481572 6248930 6725399
  * @summary Test Channels basic functionality
  */
 
 import java.io.*;
 import java.nio.*;
+import java.nio.charset.*;
 import java.nio.channels.*;
 
 
@@ -50,22 +51,106 @@
         test();
     }
 
+    static void failNpeExpected() {
+        throw new RuntimeException("Did not get the expected NullPointerException.");
+    }
+
     private static void test() throws Exception {
+        //Test if methods of Channels throw NPE with null argument(s)
+        try {
+            Channels.newInputStream((ReadableByteChannel)null);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newOutputStream((WritableByteChannel)null);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
         try {
             ReadableByteChannel channel = Channels.newChannel((InputStream)null);
-
-            throw new RuntimeException("Did not get the expected NullPointerException.");
-        } catch (NullPointerException ne) {
-            // OK. As expected.
-        }
+            failNpeExpected();
+        } catch (NullPointerException ne) {}  // OK. As expected.
 
         try {
             WritableByteChannel channel = Channels.newChannel((OutputStream)null);
+            failNpeExpected();
+        } catch (NullPointerException ne) {}  // OK. As expected.
 
-            throw new RuntimeException("Did not get the expected NullPointerException.");
-        } catch (NullPointerException ne) {
-            // OK. As expected.
-        }
+        WritableByteChannel wbc = new WritableByteChannel() {
+            public int write(ByteBuffer src) { return 0; }
+            public void close() throws IOException { }
+            public boolean isOpen() { return true; }
+        };
+
+        ReadableByteChannel rbc = new ReadableByteChannel() {
+            public int read(ByteBuffer dst) { return 0; }
+            public void close() {}
+            public boolean isOpen() { return true; }
+        };
+
+        try {
+            Channels.newReader((ReadableByteChannel)null,
+                               Charset.defaultCharset().newDecoder(),
+                               -1);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newReader(rbc, (CharsetDecoder)null, -1);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newReader((ReadableByteChannel)null,
+                               Charset.defaultCharset().name());
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newReader(rbc, null);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+
+        try {
+            Channels.newReader(null, null);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newWriter((WritableByteChannel)null,
+                               Charset.defaultCharset().newEncoder(),
+                               -1);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newWriter(null, null, -1);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newWriter(wbc, null, -1);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newWriter((WritableByteChannel)null,
+                               Charset.defaultCharset().name());
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newWriter(wbc, null);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
+        try {
+            Channels.newWriter(null, null);
+            failNpeExpected();
+        } catch (NullPointerException npe) {}
+
 
         try {
             blah = File.createTempFile("blah", null);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/nio/channels/Selector/CloseThenRegister.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @bug 5025260
+ * @summary ClosedSelectorException is expected when register after close
+ */
+
+import java.net.*;
+import java.nio.channels.*;
+
+public class CloseThenRegister {
+
+    public static void main (String [] args) throws Exception {
+        try {
+            Selector s = Selector.open();
+            s.close();
+            ServerSocketChannel c = ServerSocketChannel.open();
+            c.socket().bind(new InetSocketAddress(40000));
+            c.configureBlocking(false);
+            c.register(s, SelectionKey.OP_ACCEPT);
+        } catch (ClosedSelectorException cse) {
+            return;
+        }
+        throw new RuntimeException("register after close does not cause CSE!");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/security/cert/CertPathValidatorException/GetMessage.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6765046
+ * @summary check that getMessage(cause) returns cause.toString if cause != null
+ */
+
+import java.security.cert.CertPathValidatorException;
+
+public class GetMessage {
+    private static volatile boolean failed = false;
+    public static void main(String[] args) throws Exception {
+
+        Throwable[] causes = {
+                new Throwable(),
+                new Throwable("message"),
+                new Throwable("message", new Throwable()) };
+
+        for (Throwable cause: causes) {
+            CertPathValidatorException cpve =
+                new CertPathValidatorException(cause);
+
+            // from CertPathValidatorException(Throwable cause) spec:
+            // The detail message is set to (cause==null ? null : cause.toString() )
+            // (which typically contains the class and detail message of cause).
+            String expMsg = (cause == null ? null : cause.toString());
+            String actualMsg = cpve.getMessage();
+
+            boolean msgsEqual =
+                (expMsg == null ? actualMsg == null : expMsg.equals(actualMsg));
+            if (!msgsEqual) {
+                System.out.println("expected message:" + expMsg);
+                System.out.println("getMessage():" + actualMsg);
+                failed = true;
+            }
+        }
+        if (failed) {
+            throw new Exception("Some tests FAILED");
+        }
+    }
+}
--- a/test/java/util/TimeZone/OldIDMappingTest.sh	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/util/TimeZone/OldIDMappingTest.sh	Thu Jan 29 18:33:52 2009 -0800
@@ -1,4 +1,4 @@
-# Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2003-2008 Sun Microsystems, Inc.  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
--- a/test/java/util/zip/TestEmptyZip.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/java/util/zip/TestEmptyZip.java	Thu Jan 29 18:33:52 2009 -0800
@@ -39,35 +39,24 @@
             throw new Exception("failed to delete " + zipName);
         }
 
-        // Verify 0-length file cannot be read
         f.createNewFile();
-        ZipFile zf = null;
         try {
-            zf = new ZipFile(f);
-            fail();
-        } catch (Exception ex) {
-            check(ex.getMessage().contains("zip file is empty"));
-        } finally {
-            if (zf != null) {
-                zf.close();
-            }
-        }
+            // Verify 0-length file cannot be read
+            checkCannotRead(f);
 
-        ZipInputStream zis = null;
-        try {
-            zis = new ZipInputStream(new FileInputStream(f));
-            ZipEntry ze = zis.getNextEntry();
-            check(ze == null);
-        } catch (Exception ex) {
-            unexpected(ex);
+            // Verify non-zip file cannot be read
+            OutputStream out = new FileOutputStream(f);
+            try {
+                out.write("class Foo { }".getBytes());
+            } finally {
+                out.close();
+            }
+            checkCannotRead(f);
+
         } finally {
-            if (zis != null) {
-                zis.close();
-            }
+            f.delete();
         }
 
-        f.delete();
-
         // Verify 0-entries file can be written
         write(f);
 
@@ -78,6 +67,29 @@
         f.delete();
     }
 
+    static void checkCannotRead(File f) throws IOException {
+        try {
+            new ZipFile(f).close();
+            fail();
+        } catch (ZipException ze) {
+            if (f.length() == 0) {
+                check(ze.getMessage().contains("zip file is empty"));
+            } else {
+                pass();
+            }
+        }
+        ZipInputStream zis = null;
+        try {
+            zis = new ZipInputStream(new FileInputStream(f));
+            ZipEntry ze = zis.getNextEntry();
+            check(ze == null);
+        } catch (IOException ex) {
+            unexpected(ex);
+        } finally {
+            if (zis != null) zis.close();
+        }
+    }
+
     static void write(File f) throws Exception {
         ZipOutputStream zos = null;
         try {
--- a/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -22,8 +22,8 @@
  */
 
 /*
- * @test %M% %I%
- * @bug 6323980
+ * @test
+ * @bug 6323980 6772779
  * @summary Test &#64;NotificationInfo annotation
  * @author Eamonn McManus
  * @run main/othervm -ea AnnotatedNotificationInfoTest
@@ -32,24 +32,40 @@
 import java.io.Serializable;
 import java.lang.management.ManagementFactory;
 import java.lang.reflect.Field;
+import java.util.Arrays;
 import javax.annotation.Resource;
 import javax.management.AttributeChangeNotification;
 import javax.management.Description;
 import javax.management.Descriptor;
 import javax.management.ImmutableDescriptor;
+import javax.management.ListenerNotFoundException;
 import javax.management.MBean;
 import javax.management.MBeanInfo;
 import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanServer;
 import javax.management.MXBean;
+import javax.management.Notification;
+import javax.management.NotificationBroadcaster;
 import javax.management.NotificationBroadcasterSupport;
+import javax.management.NotificationFilter;
 import javax.management.NotificationInfo;
 import javax.management.NotificationInfos;
+import javax.management.NotificationListener;
 import javax.management.ObjectName;
 import javax.management.SendNotification;
 
 public class AnnotatedNotificationInfoTest {
-    // Data for the first test.  This tests that MBeanNotificationInfo
+
+    static final Descriptor expectedDescriptor = new ImmutableDescriptor(
+            "foo=bar", "descriptionResourceBundleBaseName=bundle",
+            "descriptionResourceKey=key");
+    static final MBeanNotificationInfo expected = new MBeanNotificationInfo(
+            new String[] {"foo", "bar"},
+            AttributeChangeNotification.class.getName(),
+            "description",
+            expectedDescriptor);
+
+    // Data for the first kind of test.  This tests that MBeanNotificationInfo
     // is correctly derived from @NotificationInfo.
     // Every static field called mbean* is expected to be an MBean
     // with a single MBeanNotificationInfo that has the same value
@@ -134,6 +150,23 @@
 
     private static Object mbeanIntf5 = new Intf5Impl();
 
+    @NotificationInfo(
+            types = {"foo", "bar"},
+            notificationClass = AttributeChangeNotification.class,
+            description = @Description(
+                value = "description",
+                bundleBaseName = "bundle",
+                key = "key"),
+            descriptorFields = {"foo=bar"})
+    public static interface Intf6MBean {}
+
+    public static class Intf6 implements Intf6MBean {
+        @Resource
+        private volatile SendNotification send;
+    }
+
+    private static Object mbeanIntf6 = new Intf6();
+
     public static interface Impl1MBean {}
 
     @NotificationInfo(
@@ -202,22 +235,21 @@
 
     private static Object mbeanMBean2 = new MBean2();
 
-    // Following disabled until we support it
-//    @MBean
-//    @NotificationInfo(
-//            types = {"foo", "bar"},
-//            notificationClass = AttributeChangeNotification.class,
-//            description = @Description(
-//                value = "description",
-//                bundleBaseName = "bundle",
-//                key = "key"),
-//            descriptorFields = {"foo=bar"})
-//    public static class MBean3 {
-//        @Resource
-//        private volatile SendNotification send;
-//    }
-//
-//    private static Object mbeanMBean3 = new MBean3();
+    @MBean
+    @NotificationInfo(
+            types = {"foo", "bar"},
+            notificationClass = AttributeChangeNotification.class,
+            description = @Description(
+                value = "description",
+                bundleBaseName = "bundle",
+                key = "key"),
+            descriptorFields = {"foo=bar"})
+    public static class MBean3 {
+        @Resource
+        private volatile SendNotification send;
+    }
+
+    private static Object mbeanMBean3 = new MBean3();
 
     @MXBean
     @NotificationInfo(
@@ -237,6 +269,127 @@
 
     private static Object mbeanMXBean2 = new MXBean2();
 
+    // Test that @NotificationInfo and @NotificationInfos are ignored if
+    // the MBean returns a non-empty MBeanNotificationInfo[] from its
+    // NotificationBroadcaster.getNotifications() implementation.
+
+    @NotificationInfo(types={"blim", "blam"})
+    public static interface Explicit1MBean {}
+
+    public static class Explicit1
+            extends NotificationBroadcasterSupport implements Explicit1MBean {
+        public Explicit1() {
+            super(expected);
+        }
+    }
+
+    private static Object mbeanExplicit1 = new Explicit1();
+
+    @NotificationInfos(
+        {
+            @NotificationInfo(types="blim"), @NotificationInfo(types="blam")
+        }
+    )
+    public static interface Explicit2MXBean {}
+
+    public static class Explicit2
+            implements NotificationBroadcaster, Explicit2MXBean {
+        public void addNotificationListener(NotificationListener listener,
+                NotificationFilter filter, Object handback) {}
+
+        public void removeNotificationListener(NotificationListener listener)
+                throws ListenerNotFoundException {}
+
+        public MBeanNotificationInfo[] getNotificationInfo() {
+            return new MBeanNotificationInfo[] {expected};
+        }
+    }
+
+    // Data for the second kind of test.  This tests that @NotificationInfo is
+    // ignored if the MBean is not a notification source.  Every static
+    // field called ignoredMBean* is expected to be an MBean on which
+    // isInstanceOf(NotificationBroadcaster.class.getName() is false,
+    // addNotificationListener produces an exception, and the
+    // MBeanNotificationInfo array is empty.
+    @NotificationInfo(types={"com.example.notifs.create",
+                             "com.example.notifs.destroy"})
+    public static interface CacheMBean {
+        public int getCachedNum();
+    }
+
+    public static class Cache implements CacheMBean {
+        public int getCachedNum() {
+            return 0;
+        }
+    }
+
+    private static Object ignoredMBean1 = new Cache();
+
+    @NotificationInfos(
+        @NotificationInfo(types={"foo", "bar"})
+    )
+    public static interface Cache2MBean {
+        public int getCachedNum();
+    }
+
+    public static class Cache2 implements Cache2MBean {
+        public int getCachedNum() {
+            return 0;
+        }
+    }
+
+    private static Object ignoredMBean2 = new Cache2();
+
+    private static final NotificationListener nullListener =
+            new NotificationListener() {
+                public void handleNotification(
+                        Notification notification, Object handback) {}
+            };
+
+    // Test that inheriting inconsistent @NotificationInfo annotations is
+    // an error, but not if they are overridden by a non-empty getNotifications()
+
+    @NotificationInfo(types={"blim"})
+    public static interface Inconsistent1 {}
+
+    @NotificationInfo(types={"blam"})
+    public static interface Inconsistent2 {}
+
+    public static interface InconsistentMBean extends Inconsistent1, Inconsistent2 {}
+
+    public static class Inconsistent
+            extends NotificationBroadcasterSupport implements InconsistentMBean {}
+
+    public static class Consistent
+            extends Inconsistent implements NotificationBroadcaster {
+        public void addNotificationListener(NotificationListener listener,
+                NotificationFilter filter, Object handback) {}
+
+        public void removeNotificationListener(NotificationListener listener)
+                throws ListenerNotFoundException {}
+
+        public MBeanNotificationInfo[] getNotificationInfo() {
+            return new MBeanNotificationInfo[] {expected};
+        }
+    }
+
+    private static Object mbeanConsistent = new Consistent();
+
+    @NotificationInfo(
+            types = {"foo", "bar"},
+            notificationClass = AttributeChangeNotification.class,
+            description = @Description(
+                value = "description",
+                bundleBaseName = "bundle",
+                key = "key"),
+            descriptorFields = {"foo=bar"})
+    public static interface Consistent2MBean extends Inconsistent1, Inconsistent2 {}
+
+    public static class Consistent2
+            extends NotificationBroadcasterSupport implements Consistent2MBean {}
+
+    private static Object mbeanConsistent2 = new Consistent2();
+
     public static void main(String[] args) throws Exception {
         if (!AnnotatedNotificationInfoTest.class.desiredAssertionStatus())
             throw new Exception("Test must be run with -ea");
@@ -244,28 +397,46 @@
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
         ObjectName on = new ObjectName("a:b=c");
 
-        Descriptor expectedDescriptor = new ImmutableDescriptor(
-                "foo=bar", "descriptionResourceBundleBaseName=bundle",
-                "descriptionResourceKey=key");
-        MBeanNotificationInfo expected = new MBeanNotificationInfo(
-                new String[] {"foo", "bar"},
-                AttributeChangeNotification.class.getName(),
-                "description",
-                expectedDescriptor);
-
         System.out.println("Testing MBeans...");
         for (Field mbeanField :
                 AnnotatedNotificationInfoTest.class.getDeclaredFields()) {
-            if (!mbeanField.getName().startsWith("mbean"))
+            boolean notifier;
+            if (mbeanField.getName().startsWith("mbean"))
+                notifier = true;
+            else if (mbeanField.getName().startsWith("ignoredMBean"))
+                notifier = false;
+            else
                 continue;
             System.out.println("..." + mbeanField.getName());
             Object mbean = mbeanField.get(null);
             mbs.registerMBean(mbean, on);
             MBeanInfo mbi = mbs.getMBeanInfo(on);
             MBeanNotificationInfo[] mbnis = mbi.getNotifications();
-            assert mbnis.length == 1 : mbnis.length;
-            assert mbnis[0].equals(expected) : mbnis[0];
+            if (notifier) {
+                assert mbnis.length == 1 : mbnis.length;
+                assert mbnis[0].equals(expected) : mbnis[0];
+            } else {
+                assert mbnis.length == 0 : mbnis.length;
+                assert !mbs.isInstanceOf(on, NotificationBroadcaster.class.getName());
+                try {
+                    mbs.addNotificationListener(on, nullListener, null, null);
+                    assert false : "addNotificationListener works";
+                } catch (Exception e) {
+                    // OK: addNL correctly refused
+                }
+            }
             mbs.unregisterMBean(on);
         }
+
+        // Test that inconsistent @NotificationInfo annotations produce an
+        // error.
+        try {
+            mbs.registerMBean(new Inconsistent(), on);
+            System.out.println(mbs.getMBeanInfo(on));
+            assert false : "Inconsistent @NotificationInfo not detected";
+        } catch (Exception e) {
+            System.out.println(
+                    "Inconsistent @NotificationInfo correctly produced " + e);
+        }
     }
 }
--- a/test/javax/management/Introspector/AnnotationTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/Introspector/AnnotationTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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,7 +39,8 @@
 
 /*
   This test checks that annotations produce Descriptor entries as
-  specified in javax.management.DescriptorKey.  It does two things:
+  specified in javax.management.DescriptorKey and javax.management.DescriptorField.
+  It does the following:
 
   - An annotation consisting of an int and a String, each with an
     appropriate @DescriptorKey annotation, is placed on every program
@@ -61,6 +62,10 @@
     The test checks that in each case the corresponding Descriptor
     appears in the appropriate place inside the MBean's MBeanInfo.
 
+ - A @DescriptorFields annotation defining two fields is placed in the
+   same places and again the test checks that the two fields appear
+   in the corresponding MBean*Info objects.
+
   - An annotation consisting of enough other types to ensure coverage
     is placed on a getter.  The test checks that the generated
     MBeanAttributeInfo contains the corresponding Descriptor.  The tested
@@ -78,12 +83,6 @@
 public class AnnotationTest {
     private static String failed = null;
 
-//    @Retention(RetentionPolicy.RUNTIME) @Inherited
-//    @Target(ElementType.METHOD)
-//    public static @interface DescriptorKey {
-//        String value();
-//    }
-
     @Retention(RetentionPolicy.RUNTIME)
     public static @interface Pair {
         @DescriptorKey("x")
@@ -112,11 +111,12 @@
         boolean[] booleanArrayValue();
     }
 
-    /* We use the annotation @Pair(x = 3, y = "foo") everywhere, and this is
-       the Descriptor that it should produce: */
+    /* We use the annotations @Pair(x = 3, y = "foo")
+       and @DescriptorFields({"foo=bar", "baz="}) everywhere, and this is
+       the Descriptor that they should produce: */
     private static Descriptor expectedDescriptor =
-        new ImmutableDescriptor(new String[] {"x", "y"},
-                                new Object[] {3, "foo"});
+        new ImmutableDescriptor(new String[] {"x", "y", "foo", "baz"},
+                                new Object[] {3, "foo", "bar", ""});
 
     private static Descriptor expectedFullDescriptor =
         new ImmutableDescriptor(new String[] {
@@ -136,8 +136,10 @@
                                 });
 
     @Pair(x = 3, y = "foo")
+    @DescriptorFields({"foo=bar", "baz="})
     public static interface ThingMBean {
         @Pair(x = 3, y = "foo")
+        @DescriptorFields({"foo=bar", "baz="})
         @Full(classValue=Full.class,
               enumValue=RetentionPolicy.RUNTIME,
               booleanValue=false,
@@ -149,32 +151,47 @@
         int getReadOnly();
 
         @Pair(x = 3, y = "foo")
+        @DescriptorFields({"foo=bar", "baz="})
         void setWriteOnly(int x);
 
         @Pair(x = 3, y = "foo")
+        @DescriptorFields({"foo=bar", "baz="})
         int getReadWrite1();
         void setReadWrite1(int x);
 
         @Pair(x = 3, y = "foo")
+        @DescriptorFields({"foo=bar", "baz="})
         int getReadWrite2();
         @Pair(x = 3, y = "foo")
+        @DescriptorFields({"foo=bar", "baz="})
         void setReadWrite2(int x);
 
         int getReadWrite3();
         @Pair(x = 3, y = "foo")
+        @DescriptorFields({"foo=bar", "baz="})
         void setReadWrite3(int x);
 
         @Pair(x = 3, y = "foo")
-        int operation(@Pair(x = 3, y = "foo") int p1,
-                      @Pair(x = 3, y = "foo") int p2);
+        @DescriptorFields({"foo=bar", "baz="})
+        int operation(@Pair(x = 3, y = "foo")
+                      @DescriptorFields({"foo=bar", "baz="})
+                      int p1,
+                      @Pair(x = 3, y = "foo")
+                      @DescriptorFields({"foo=bar", "baz="})
+                      int p2);
     }
 
     public static class Thing implements ThingMBean {
         @Pair(x = 3, y = "foo")
+        @DescriptorFields({"foo=bar", "baz="})
         public Thing() {}
 
         @Pair(x = 3, y = "foo")
-        public Thing(@Pair(x = 3, y = "foo") int p1) {}
+        @DescriptorFields({"foo=bar", "baz="})
+        public Thing(
+                @Pair(x = 3, y = "foo")
+                @DescriptorFields({"foo=bar", "baz="})
+                int p1) {}
 
         public int getReadOnly() {return 0;}
 
@@ -193,14 +210,20 @@
     }
 
     @Pair(x = 3, y = "foo")
+    @DescriptorFields({"foo=bar", "baz="})
     public static interface ThingMXBean extends ThingMBean {}
 
     public static class ThingImpl implements ThingMXBean {
         @Pair(x = 3, y = "foo")
+        @DescriptorFields({"foo=bar", "baz="})
         public ThingImpl() {}
 
         @Pair(x = 3, y = "foo")
-        public ThingImpl(@Pair(x = 3, y = "foo") int p1) {}
+        @DescriptorFields({"foo=bar", "baz="})
+        public ThingImpl(
+                @Pair(x = 3, y = "foo")
+                @DescriptorFields({"foo=bar", "baz="})
+                int p1) {}
 
         public int getReadOnly() {return 0;}
 
@@ -218,6 +241,79 @@
         public int operation(int p1, int p2) {return 0;}
     }
 
+    @Retention(RetentionPolicy.RUNTIME)
+    public static @interface DefaultTest {
+        @DescriptorKey(value = "string1", omitIfDefault = true)
+        String string1() default "";
+        @DescriptorKey(value = "string2", omitIfDefault = true)
+        String string2() default "tiddly pom";
+        @DescriptorKey(value = "int", omitIfDefault = true)
+        int intx() default 23;
+        @DescriptorKey(value = "intarray1", omitIfDefault = true)
+        int[] intArray1() default {};
+        @DescriptorKey(value = "intarray2", omitIfDefault = true)
+        int[] intArray2() default {1, 2};
+        @DescriptorKey(value = "stringarray1", omitIfDefault = true)
+        String[] stringArray1() default {};
+        @DescriptorKey(value = "stringarray2", omitIfDefault = true)
+        String[] stringArray2() default {"foo", "bar"};
+    }
+
+    @Retention(RetentionPolicy.RUNTIME)
+    public static @interface Expect {
+        String[] value() default {};
+    }
+
+    public static interface DefaultMBean {
+        @DefaultTest
+        @Expect()
+        public void a();
+
+        @DefaultTest(string1="")
+        @Expect()
+        public void b();
+
+        @DefaultTest(string1="nondefault")
+        @Expect("string1=nondefault")
+        public void c();
+
+        @DefaultTest(string2="tiddly pom")
+        @Expect()
+        public void d();
+
+        @DefaultTest(intx=23)
+        @Expect()
+        public void e();
+
+        @DefaultTest(intx=34)
+        @Expect("int=34")
+        public void f();
+
+        @DefaultTest(intArray1={})
+        @Expect()
+        public void g();
+
+        @DefaultTest(intArray1={2,3})
+        @Expect("intarray1=[2, 3]")
+        public void h();
+
+        @DefaultTest(intArray2={})
+        @Expect("intarray2=[]")
+        public void i();
+
+        @DefaultTest(stringArray1={})
+        @Expect()
+        public void j();
+
+        @DefaultTest(stringArray1={"foo"})
+        @Expect("stringarray1=[foo]")
+        public void k();
+
+        @DefaultTest(stringArray2={})
+        @Expect("stringarray2=[]")
+        public void l();
+    }
+
     public static void main(String[] args) throws Exception {
         System.out.println("Testing that annotations are correctly " +
                            "reflected in Descriptor entries");
@@ -225,20 +321,62 @@
         MBeanServer mbs =
             java.lang.management.ManagementFactory.getPlatformMBeanServer();
         ObjectName on = new ObjectName("a:b=c");
+
         Thing thing = new Thing();
         mbs.registerMBean(thing, on);
         check(mbs, on);
         mbs.unregisterMBean(on);
+
         ThingImpl thingImpl = new ThingImpl();
         mbs.registerMBean(thingImpl, on);
+        Descriptor d = mbs.getMBeanInfo(on).getDescriptor();
+        if (!d.getFieldValue("mxbean").equals("true")) {
+            System.out.println("NOT OK: expected MXBean");
+            failed = "Expected MXBean";
+        }
         check(mbs, on);
 
+        System.out.println();
+        System.out.println("Testing that omitIfDefault works");
+        DefaultMBean defaultImpl = (DefaultMBean) Proxy.newProxyInstance(
+                DefaultMBean.class.getClassLoader(),
+                new Class<?>[] {DefaultMBean.class},
+                new InvocationHandler(){
+                    public Object invoke(Object proxy, Method method, Object[] args) {
+                        return null;
+                    }
+                });
+        DynamicMBean mbean = new StandardMBean(defaultImpl, DefaultMBean.class);
+        MBeanOperationInfo[] ops = mbean.getMBeanInfo().getOperations();
+        for (MBeanOperationInfo op : ops) {
+            String name = op.getName();
+            Expect expect =
+                    DefaultMBean.class.getMethod(name).getAnnotation(Expect.class);
+            Descriptor opd = op.getDescriptor();
+            List<String> fields = new ArrayList<String>();
+            for (String fieldName : opd.getFieldNames()) {
+                Object value = opd.getFieldValue(fieldName);
+                String s = Arrays.deepToString(new Object[] {value});
+                s = s.substring(1, s.length() - 1);
+                fields.add(fieldName + "=" + s);
+            }
+            Descriptor opds = new ImmutableDescriptor(fields.toArray(new String[0]));
+            Descriptor expd = new ImmutableDescriptor(expect.value());
+            if (opds.equals(expd))
+                System.out.println("OK: op " + name + ": " + opds);
+            else {
+                String failure = "Bad descriptor for op " + name + ": " +
+                        "expected " + expd + ", got " + opds;
+                System.out.println("NOT OK: " + failure);
+                failed = failure;
+            }
+        }
+        System.out.println();
+
         if (failed == null)
             System.out.println("Test passed");
-        else if (true)
+        else
             throw new Exception("TEST FAILED: " + failed);
-        else
-            System.out.println("Test disabled until 6221321 implemented");
     }
 
     private static void check(MBeanServer mbs, ObjectName on) throws Exception {
@@ -295,151 +433,4 @@
         for (DescriptorRead x : xx)
             check(x);
     }
-
-    public static class AnnotatedMBean extends StandardMBean {
-        <T> AnnotatedMBean(T resource, Class<T> interfaceClass, boolean mx) {
-            super(resource, interfaceClass, mx);
-        }
-
-        private static final String[] attrPrefixes = {"get", "set", "is"};
-
-        protected void cacheMBeanInfo(MBeanInfo info) {
-            MBeanAttributeInfo[] attrs = info.getAttributes();
-            MBeanOperationInfo[] ops = info.getOperations();
-
-            for (int i = 0; i < attrs.length; i++) {
-                MBeanAttributeInfo attr = attrs[i];
-                String name = attr.getName();
-                Descriptor d = attr.getDescriptor();
-                Method m;
-                if ((m = getMethod("get" + name)) != null)
-                    d = ImmutableDescriptor.union(d, descriptorFor(m));
-                if (attr.getType().equals("boolean") &&
-                        (m = getMethod("is" + name)) != null)
-                    d = ImmutableDescriptor.union(d, descriptorFor(m));
-                if ((m = getMethod("set" + name, attr)) != null)
-                    d = ImmutableDescriptor.union(d, descriptorFor(m));
-                if (!d.equals(attr.getDescriptor())) {
-                    attrs[i] =
-                        new MBeanAttributeInfo(name, attr.getType(),
-                            attr.getDescription(), attr.isReadable(),
-                            attr.isWritable(), attr.isIs(), d);
-                }
-            }
-
-            for (int i = 0; i < ops.length; i++) {
-                MBeanOperationInfo op = ops[i];
-                String name = op.getName();
-                Descriptor d = op.getDescriptor();
-                MBeanParameterInfo[] params = op.getSignature();
-                Method m = getMethod(name, params);
-                if (m != null) {
-                    d = ImmutableDescriptor.union(d, descriptorFor(m));
-                    Annotation[][] annots = m.getParameterAnnotations();
-                    for (int pi = 0; pi < params.length; pi++) {
-                        MBeanParameterInfo param = params[pi];
-                        Descriptor pd =
-                                ImmutableDescriptor.union(param.getDescriptor(),
-                                    descriptorFor(annots[pi]));
-                        params[pi] = new MBeanParameterInfo(param.getName(),
-                                param.getType(), param.getDescription(), pd);
-                    }
-                    op = new MBeanOperationInfo(op.getName(),
-                            op.getDescription(), params, op.getReturnType(),
-                            op.getImpact(), d);
-                    if (!ops[i].equals(op))
-                        ops[i] = op;
-                }
-            }
-
-            Descriptor id = descriptorFor(getMBeanInterface());
-            info = new MBeanInfo(info.getClassName(), info.getDescription(),
-                    attrs, info.getConstructors(), ops, info.getNotifications(),
-                    ImmutableDescriptor.union(id, info.getDescriptor()));
-            super.cacheMBeanInfo(info);
-        }
-
-        private Descriptor descriptorFor(AnnotatedElement x) {
-            Annotation[] annots = x.getAnnotations();
-            return descriptorFor(annots);
-        }
-
-        private Descriptor descriptorFor(Annotation[] annots) {
-            if (annots.length == 0)
-                return ImmutableDescriptor.EMPTY_DESCRIPTOR;
-            Map<String, Object> descriptorMap = new HashMap<String, Object>();
-            for (Annotation a : annots) {
-                Class<? extends Annotation> c = a.annotationType();
-                Method[] elements = c.getMethods();
-                for (Method element : elements) {
-                    DescriptorKey key =
-                        element.getAnnotation(DescriptorKey.class);
-                    if (key != null) {
-                        String name = key.value();
-                        Object value;
-                        try {
-                            value = element.invoke(a);
-                        } catch (Exception e) {
-                            // we don't expect this
-                            throw new RuntimeException(e);
-                        }
-                        Object oldValue = descriptorMap.put(name, value);
-                        if (oldValue != null && !oldValue.equals(value)) {
-                            final String msg =
-                                "Inconsistent values for descriptor field " +
-                                name + " from annotations: " + value + " :: " +
-                                oldValue;
-                            throw new IllegalArgumentException(msg);
-                        }
-                    }
-                }
-            }
-            if (descriptorMap.isEmpty())
-                return ImmutableDescriptor.EMPTY_DESCRIPTOR;
-            else
-                return new ImmutableDescriptor(descriptorMap);
-        }
-
-        private Method getMethod(String name, MBeanFeatureInfo... params) {
-            Class<?> intf = getMBeanInterface();
-            ClassLoader loader = intf.getClassLoader();
-            Class[] classes = new Class[params.length];
-            for (int i = 0; i < params.length; i++) {
-                MBeanFeatureInfo param = params[i];
-                Descriptor d = param.getDescriptor();
-                String type = (String) d.getFieldValue("originalType");
-                if (type == null) {
-                    if (param instanceof MBeanAttributeInfo)
-                        type = ((MBeanAttributeInfo) param).getType();
-                    else
-                        type = ((MBeanParameterInfo) param).getType();
-                }
-                Class<?> c = primitives.get(type);
-                if (c == null) {
-                    try {
-                        c = Class.forName(type, false, loader);
-                    } catch (ClassNotFoundException e) {
-                        return null;
-                    }
-                }
-                classes[i] = c;
-            }
-            try {
-                return intf.getMethod(name, classes);
-            } catch (Exception e) {
-                return null;
-            }
-        }
-
-        private static final Map<String, Class<?>> primitives =
-                new HashMap<String, Class<?>>();
-        static {
-            for (Class<?> c :
-                    new Class[] {boolean.class, byte.class, short.class,
-                                 int.class, long.class, float.class,
-                                 double.class, char.class, void.class}) {
-                primitives.put(c.getName(), c);
-            }
-        }
-    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/Introspector/ExceptionsDescriptorTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,245 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test %M% %I%
+ * @bug 6250014
+ * @summary Test that Exceptions are added to the MbeanInfo
+ * @author Jean-Francois Denise
+ * @run main/othervm ExceptionsDescriptorTest
+ */
+import java.lang.management.ManagementFactory;
+import java.util.HashSet;
+import java.util.Set;
+import javax.management.Descriptor;
+import javax.management.JMX;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanConstructorInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.ObjectName;
+
+public class ExceptionsDescriptorTest {
+
+    private static final ObjectName OBJECT_NAME = ObjectName.valueOf(":type=Foo");
+    final static String EXCEPTION_NAME = Exception.class.getName();
+    final static String ILLEGAL_ARGUMENT_EXCEPTION_NAME =
+            IllegalArgumentException.class.getName();
+    final static Set<String> ONE_EXCEPTION = new HashSet<String>();
+    final static Set<String> TWO_EXCEPTION = new HashSet<String>();
+    static {
+        ONE_EXCEPTION.add(EXCEPTION_NAME);
+        TWO_EXCEPTION.add(EXCEPTION_NAME);
+        TWO_EXCEPTION.add(ILLEGAL_ARGUMENT_EXCEPTION_NAME);
+    }
+    public interface TestMBean {
+
+        public void doIt();
+
+        public void doIt(String str) throws Exception;
+
+        public void doIt(String str, boolean b) throws Exception,
+                IllegalArgumentException;
+
+        public String getThat();
+
+        public void setThat(String that);
+
+        public String getThe() throws Exception;
+
+        public void setThe(String the);
+
+        public String getThese();
+
+        public void setThese(String the) throws Exception;
+
+        public String getIt() throws Exception;
+
+        public void setIt(String str) throws Exception;
+
+        public String getThis() throws Exception, IllegalArgumentException;
+
+        public void setThose(String str) throws Exception,
+                IllegalArgumentException;
+    }
+
+    public static class Test implements TestMBean {
+
+        public Test() {
+        }
+
+        public Test(int i) throws Exception {
+        }
+
+        public Test(int i, int j) throws Exception, IllegalArgumentException {
+        }
+
+        public void doIt() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void doIt(String str) throws Exception {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void doIt(String str, boolean b) throws Exception, IllegalArgumentException {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public String getThat() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void setThat(String that) {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public String getThe() throws Exception {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void setThe(String the) {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public String getThese() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void setThese(String the) throws Exception {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public String getIt() throws Exception {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void setIt(String str) throws Exception {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public String getThis() throws Exception, IllegalArgumentException {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void setThose(String str) throws Exception, IllegalArgumentException {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+    }
+
+    private static void check(Descriptor d,
+            Set<String> exceptionsExpectedValue,
+            boolean exceptionsExpected,
+            Set<String> setExceptionsExpectedValue,
+            boolean setExceptionsExpected) throws Exception {
+        String[] exceptionsValues = (String[]) d.getFieldValue(JMX.EXCEPTIONS_FIELD);
+        String[] setExceptionsValues = (String[]) d.getFieldValue(JMX.SET_EXCEPTIONS_FIELD);
+
+        if (exceptionsExpected && exceptionsValues == null) {
+            throw new Exception("exceptions is expected but null value");
+        }
+        if (!exceptionsExpected && exceptionsValues != null) {
+            throw new Exception("exceptions is not expected but non null value");
+        }
+        if (setExceptionsExpected && setExceptionsValues == null) {
+            throw new Exception("setExceptions is expected but null value");
+        }
+        if (!setExceptionsExpected && setExceptionsValues != null) {
+            throw new Exception("setExceptions is not expected but non null value");
+        }
+
+        if (exceptionsExpected) {
+            checkValues(exceptionsExpectedValue, exceptionsValues);
+        }
+        if (setExceptionsExpected) {
+            checkValues(setExceptionsExpectedValue, setExceptionsValues);
+        }
+    }
+
+    private static void checkValues(Set<String> expectedValuesSet,
+            String[] realValues) throws Exception {
+
+        Set<String> realValuesSet = new HashSet<String>();
+        for (String ex : realValues) {
+            realValuesSet.add(ex);
+        }
+        if (!realValuesSet.equals(expectedValuesSet)) {
+            throw new Exception("Invalid content for exceptions. Was expecting " +
+                    expectedValuesSet + ". Found " + realValuesSet);
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        Test t = new Test();
+        ManagementFactory.getPlatformMBeanServer().registerMBean(t, OBJECT_NAME);
+        MBeanInfo info = ManagementFactory.getPlatformMBeanServer().
+                getMBeanInfo(OBJECT_NAME);
+        //Constructors
+        for (MBeanConstructorInfo ctr : info.getConstructors()) {
+            if (ctr.getSignature().length == 0) {
+                check(ctr.getDescriptor(), null, false, null, false);
+            }
+            if (ctr.getSignature().length == 1) {
+                check(ctr.getDescriptor(), ONE_EXCEPTION, true, null, false);
+            }
+            if (ctr.getSignature().length == 2) {
+                check(ctr.getDescriptor(),TWO_EXCEPTION,true, null, false);
+            }
+        }
+        //Attributes
+        for (MBeanAttributeInfo attr : info.getAttributes()) {
+            if (attr.getName().equals("That")) {
+                check(attr.getDescriptor(), null, false, null, false);
+            }
+            if (attr.getName().equals("The")) {
+                check(attr.getDescriptor(), ONE_EXCEPTION,true,null, false);
+            }
+            if (attr.getName().equals("These")) {
+                check(attr.getDescriptor(), null, false, ONE_EXCEPTION,true);
+            }
+            if (attr.getName().equals("It")) {
+                check(attr.getDescriptor(), ONE_EXCEPTION,true,ONE_EXCEPTION,
+                        true);
+            }
+            if (attr.getName().equals("This")) {
+                check(attr.getDescriptor(), TWO_EXCEPTION,true,null,false);
+            }
+            if (attr.getName().equals("Those")) {
+                check(attr.getDescriptor(), null,false,TWO_EXCEPTION,true);
+            }
+        }
+        //Operations
+        for (MBeanOperationInfo oper : info.getOperations()) {
+            if (oper.getSignature().length == 0) {
+                check(oper.getDescriptor(), null, false, null, false);
+            }
+            if (oper.getSignature().length == 1) {
+                check(oper.getDescriptor(), ONE_EXCEPTION, true, null, false);
+            }
+            if (oper.getSignature().length == 2) {
+                check(oper.getDescriptor(), TWO_EXCEPTION,true, null, false);
+            }
+        }
+        System.out.println("Test passed");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/Introspector/ObjectNameTemplateTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,343 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test %M% %I%
+ * @bug 6675526
+ * @summary Test MBeans named with &#64;ObjectNameTemplate
+ * @author Jean-Francois Denise
+ * @run main/othervm ObjectNameTemplateTest
+ */
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.List;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.DynamicMBean;
+import javax.management.ImmutableDescriptor;
+import javax.management.InvalidAttributeValueException;
+import javax.management.JMX;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.MXBean;
+import javax.management.MBean;
+import javax.management.ManagedAttribute;
+import javax.management.NotCompliantMBeanException;
+import javax.management.ObjectName;
+import javax.management.ObjectNameTemplate;
+import javax.management.ReflectionException;
+import javax.management.StandardMBean;
+
+public class ObjectNameTemplateTest {
+
+    private static MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+    private static final String NAME_TEMPLATE_MULTI =
+            "com.example:type=MultiStdCache,name={Name}";
+    private static final String NAME_TEMPLATE_MONO =
+            "com.example:{Type}={TypeValue}";
+    private static final String NAME_TEMPLATE_QUOTED =
+            "com.example:type=Quotted,name=\"{Name}\"";
+    private static final String NAME_TEMPLATE_WRAPPED =
+            "com.example:type=MgtInterface,id={Id}";
+    private static final String NAME_TEMPLATE_FULL =
+            "{Naming}";
+    private static final String FULL_NAME = "com.example:type=NotAdvised";
+    private static final String NAME1 = "toto1";
+    private static final String NAME2 = "toto2";
+    private static final String TYPE_KEY = "thisIsTheType";
+    private static final String TYPE_VALUE = "aTypeValue";
+    private static final String INVALID_NAME = "?,=*,\n, ";
+    private static final int ID = 999;
+    private static Object[] EMPTY_PARAMS = {};
+    private static String[] EMPTY_SIGNATURE = {};
+    private static final ObjectName OBJECTNAME_CACHE =
+            ObjectName.valueOf("com.example:type=Cache");
+    private static final ObjectName OBJECTNAME_SUBCACHE =
+            ObjectName.valueOf("com.example:type=SubCache");
+    private static final ObjectName OBJECTNAME_CACHEMX =
+            ObjectName.valueOf("com.example:type=CacheMX");
+    private static final ObjectName OBJECTNAME_SUBCACHEMX =
+            ObjectName.valueOf("com.example:type=SubCacheMX");
+    private static final ObjectName OBJECTNAME_DYNACACHE =
+            ObjectName.valueOf("com.example:type=DynaCache");
+    private static final ObjectName OBJECTNAME_STDCACHE =
+            ObjectName.valueOf("com.example:type=StdCache");
+    private static final ObjectName OBJECTNAME_STDCACHEMX =
+            ObjectName.valueOf("com.example:type=StdCacheMX");
+    private static final ObjectName OBJECTNAME_MULTI_1 =
+            ObjectName.valueOf("com.example:" +
+            "type=MultiStdCache,name=" + NAME1);
+    private static final ObjectName OBJECTNAME_MULTI_2 =
+            ObjectName.valueOf("com.example:" +
+            "type=MultiStdCache,name=" + NAME2);
+    private static final ObjectName OBJECTNAME_MONO =
+            ObjectName.valueOf("com.example:" + TYPE_KEY + "=" +
+            TYPE_VALUE);
+    private static final ObjectName OBJECTNAME_QUOTED =
+            ObjectName.valueOf("com.example:type=Quotted," +
+            "name="+ObjectName.quote(INVALID_NAME));
+    private static final ObjectName OBJECTNAME_WRAPPED_RESOURCE =
+            ObjectName.valueOf("com.example:type=MgtInterface,id=" + ID);
+    private static final ObjectName OBJECTNAME_FULL =
+            ObjectName.valueOf(FULL_NAME);
+
+    private static void test(Class<?> mbean, Object[] params,
+            String[] signature, ObjectName name, String template)
+            throws Exception {
+        mbs.createMBean(mbean.getName(), null, params, signature);
+        test(name, template);
+        List<Class<?>> parameters = new ArrayList<Class<?>>();
+        for (String sig : signature) {
+            parameters.add(Class.forName(sig));
+        }
+        Class<?> classes[] = new Class<?>[parameters.size()];
+        Constructor ctr = mbean.getConstructor(parameters.toArray(classes));
+        Object inst = ctr.newInstance(params);
+        test(inst, name, template);
+    }
+
+    private static void test(Object obj, ObjectName name, String template)
+            throws Exception {
+        mbs.registerMBean(obj, null);
+        test(name, template);
+    }
+
+    private static void test(ObjectName name, String template)
+            throws Exception {
+        if (!mbs.isRegistered(name)) {
+            throw new Exception("Wrong " + name + " name");
+        }
+        if (template != null && !mbs.getMBeanInfo(name).getDescriptor().
+                getFieldValue("objectNameTemplate").equals(template)) {
+            throw new Exception("Invalid Derscriptor");
+        }
+        mbs.unregisterMBean(name);
+    }
+
+    public static void main(String[] args) throws Exception {
+        test(Cache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_CACHE,
+                OBJECTNAME_CACHE.toString());
+
+        test(CacheMX.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_CACHEMX,
+                OBJECTNAME_CACHEMX.toString());
+
+        test(SubCache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_SUBCACHE,
+                OBJECTNAME_SUBCACHE.toString());
+
+        test(SubCacheMX.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_SUBCACHEMX,
+                OBJECTNAME_SUBCACHEMX.toString());
+
+        test(DynaCache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_DYNACACHE,
+                null);
+
+        test(StdCacheMX.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_STDCACHEMX,
+                OBJECTNAME_STDCACHEMX.toString());
+
+        test(StdCache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_STDCACHE,
+                OBJECTNAME_STDCACHE.toString());
+        String[] sig = {String.class.getName()};
+        Object[] params = {NAME1};
+        test(MultiStdCache.class, params, sig, OBJECTNAME_MULTI_1,
+                NAME_TEMPLATE_MULTI);
+        Object[] params2 = {NAME2};
+        test(MultiStdCache.class, params2, sig, OBJECTNAME_MULTI_2,
+                NAME_TEMPLATE_MULTI);
+
+        test(MonoStdCache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_MONO,
+                NAME_TEMPLATE_MONO);
+
+        test(Quoted.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_QUOTED,
+                NAME_TEMPLATE_QUOTED);
+
+        test(new StandardMBean(new WrappedResource(), MgtInterface.class),
+                OBJECTNAME_WRAPPED_RESOURCE, NAME_TEMPLATE_WRAPPED);
+
+        test(FullName.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_FULL,
+                NAME_TEMPLATE_FULL);
+        try {
+            test(Wrong.class, EMPTY_PARAMS, EMPTY_SIGNATURE, null, null);
+            throw new Exception("No treceived expected Exception");
+        } catch (NotCompliantMBeanException ncex) {
+            if (!(ncex.getCause() instanceof AttributeNotFoundException)) {
+                throw new Exception("Invalid initCause");
+            }
+        }
+    }
+
+    @MBean
+    @ObjectNameTemplate("{Naming}")
+    public static class FullName {
+
+        @ManagedAttribute
+        public String getNaming() {
+            return FULL_NAME;
+        }
+    }
+
+    @ObjectNameTemplate("com.example:type=MgtInterface,id={Id}")
+    public interface MgtInterface {
+
+        public int getId();
+    }
+
+    public static class WrappedResource implements MgtInterface {
+
+        public int getId() {
+            return ID;
+        }
+    }
+
+    @MBean
+    @ObjectNameTemplate("com.example:type=Cache")
+    public static class Cache {
+    }
+
+    @ObjectNameTemplate("com.example:type=SubCache")
+    public static class SubCache extends Cache {
+    }
+
+    @MXBean
+    @ObjectNameTemplate("com.example:type=CacheMX")
+    public static class CacheMX {
+    }
+
+    @ObjectNameTemplate("com.example:type=SubCacheMX")
+    public static class SubCacheMX extends CacheMX {
+    }
+
+    @ObjectNameTemplate("com.example:type=StdCache")
+    public interface StdCacheMBean {
+    }
+
+    public static class StdCache implements StdCacheMBean {
+    }
+
+    @ObjectNameTemplate("com.example:type=StdCacheMX")
+    public interface StdCacheMXBean {
+    }
+
+    public static class StdCacheMX implements StdCacheMXBean {
+    }
+
+    public static class DynaCache implements DynamicMBean {
+
+        public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public AttributeList getAttributes(String[] attributes) {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public AttributeList setAttributes(AttributeList attributes) {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public Object invoke(String actionName, Object[] params, String[] signature) throws MBeanException, ReflectionException {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public MBeanInfo getMBeanInfo() {
+            ImmutableDescriptor d = new ImmutableDescriptor(JMX.OBJECT_NAME_TEMPLATE + "=com.example:type=DynaCache");
+
+            return new MBeanInfo("DynaCache", "Description", null, null, null, null, d);
+        }
+    }
+
+    @ObjectNameTemplate("com.example:type=MultiStdCache,name={Name}")
+    public interface MultiStdCacheMXBean {
+
+        public String getName();
+    }
+
+    public static class MultiStdCache implements MultiStdCacheMXBean {
+
+        private String name;
+
+        public MultiStdCache(String name) {
+            this.name = name;
+        }
+
+        public String getName() {
+            return name;
+        }
+    }
+
+    @ObjectNameTemplate("com.example:{Type}={TypeValue}")
+    public interface MonoStdCacheMXBean {
+
+        public String getTypeValue();
+
+        public String getType();
+    }
+
+    public static class MonoStdCache implements MonoStdCacheMXBean {
+
+        public String getTypeValue() {
+            return TYPE_VALUE;
+        }
+
+        public String getType() {
+            return TYPE_KEY;
+        }
+    }
+
+    @ObjectNameTemplate("com.example:type=Quotted,name=\"{Name}\"")
+    public interface QuottedMXBean {
+
+        public String getName();
+    }
+
+    public static class Quoted implements QuottedMXBean {
+
+        public String getName() {
+            return INVALID_NAME;
+        }
+    }
+
+    @ObjectNameTemplate("com.example:{Type}={TypeValue}, name={Name}")
+    public interface WrongMXBean {
+
+        public String getTypeValue();
+
+        public String getType();
+    }
+
+    public static class Wrong implements WrongMXBean {
+
+        public String getTypeValue() {
+            return TYPE_VALUE;
+        }
+
+        public String getType() {
+            return TYPE_KEY;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/MBeanServer/AttributeListMapTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6336968
+ * @summary Test AttributeList.toMap
+ * @author Eamonn McManus
+ */
+
+import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+
+public class AttributeListMapTest {
+
+    private static String failure;
+
+    public static void main(String[] args) throws Exception {
+        AttributeList attrs = new AttributeList(Arrays.asList(
+            new Attribute("Str", "Five"),
+            new Attribute("Int", 5),
+            new Attribute("Flt", 5.0)));
+
+        Map<String, Object> map = attrs.toMap();
+        final Map<String, Object> expectMap = new HashMap<String, Object>();
+        for (Attribute attr : attrs.asList())
+            expectMap.put(attr.getName(), attr.getValue());
+        assertEquals("Initial map", expectMap, map);
+        assertEquals("Initial map size", 3, map.size());
+        assertEquals("Name set", expectMap.keySet(), map.keySet());
+        assertEquals("Values", new HashSet<Object>(expectMap.values()),
+                               new HashSet<Object>(map.values()));
+        assertEquals("Entry set", expectMap.entrySet(), map.entrySet());
+
+        AttributeList attrs2 = new AttributeList(map);
+        assertEquals("AttributeList from Map", attrs, attrs2);
+        // This assumes that the Map conserves the order of the attributes,
+        // which is not specified but true because we use LinkedHashMap.
+
+        // Check that toMap fails if the list contains non-Attribute elements.
+        AttributeList attrs3 = new AttributeList(attrs);
+        attrs3.add("Hello");  // allowed but curious
+        try {
+            map = attrs3.toMap();
+            fail("toMap succeeded on list with non-Attribute elements");
+        } catch (Exception e) {
+            assertEquals("Exception for toMap with non-Atttribute elements",
+                    IllegalArgumentException.class, e.getClass());
+        }
+
+        // Check that the Map does not reflect changes made to the list after
+        // the Map was obtained.
+        AttributeList attrs4 = new AttributeList(attrs);
+        map = attrs4.toMap();
+        attrs4.add(new Attribute("Big", new BigInteger("5")));
+        assertEquals("Map after adding element to list", expectMap, map);
+
+        // Check that if there is more than one Attribute with the same name
+        // then toMap() chooses the last of them.
+        AttributeList attrs5 = new AttributeList(attrs);
+        attrs5.add(new Attribute("Str", "Cinq"));
+        map = attrs5.toMap();
+        assertEquals("Size of Map for list with duplicate attribute name",
+                3, map.size());
+        Object value = map.get("Str");
+        assertEquals("Value of Str in Map for list with two values for it",
+                "Cinq", value);
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    private static void assertEquals(String what, Object expect, Object actual) {
+        if (eq(expect, actual))
+            System.out.println("OK: " + what);
+        else
+            fail(what + ": expected " + expect + ", got " + actual);
+    }
+
+    private static boolean eq(Object x, Object y) {
+        return (x == null) ? (y == null) : x.equals(y);
+    }
+
+    private static void fail(String why) {
+        System.out.println("FAIL: " + why);
+        failure = why;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/MBeanServer/AttributeListTypeSafeTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6336968
+ * @summary Test adding non-Attribute values to an AttributeList.
+ * @author Eamonn McManus
+ */
+
+import java.util.Collections;
+import java.util.List;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+
+public class AttributeListTypeSafeTest {
+
+    private static String failure;
+
+    public static void main(String[] args) throws Exception {
+        // Test calling asList after adding non-Attribute by various means
+        for (Op op : Op.values()) {
+            AttributeList alist = new AttributeList();
+            alist.add(new Attribute("foo", "bar"));
+            doOp(alist, op);
+            String what = "asList() after calling " + op + " with non-Attribute";
+            try {
+                List<Attribute> lista = alist.asList();
+                fail(what + ": succeeded but should not have");
+            } catch (IllegalArgumentException e) {
+                System.out.println("OK: " + what + ": got IllegalArgumentException");
+            }
+        }
+
+        // Test adding non-Attribute by various means after calling asList
+        for (Op op : Op.values()) {
+            AttributeList alist = new AttributeList();
+            List<Attribute> lista = alist.asList();
+            lista.add(new Attribute("foo", "bar"));
+            String what = op + " with non-Attribute after calling asList()";
+            try {
+                doOp(alist, op);
+                fail(what + ": succeeded but should not have");
+            } catch (IllegalArgumentException e) {
+                System.out.println("OK: " + what + ": got IllegalArgumentException");
+            }
+        }
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    private static enum Op {
+        ADD("add(Object)"), ADD_AT("add(int, Object)"),
+        ADD_ALL("add(Collection)"), ADD_ALL_AT("add(int, Collection)"),
+        SET("set(int, Object)");
+
+        private Op(String what) {
+            this.what = what;
+        }
+
+        @Override
+        public String toString() {
+            return what;
+        }
+
+        private final String what;
+    }
+
+    private static void doOp(AttributeList alist, Op op) {
+        Object x = "oops";
+        switch (op) {
+            case ADD: alist.add(x); break;
+            case ADD_AT: alist.add(0, x); break;
+            case ADD_ALL: alist.add(Collections.singleton(x)); break;
+            case ADD_ALL_AT: alist.add(0, Collections.singleton(x)); break;
+            case SET: alist.set(0, x); break;
+            default: throw new AssertionError("Case not covered");
+        }
+    }
+
+    private static void fail(String why) {
+        System.out.println("FAIL: " + why);
+        failure = why;
+    }
+
+}
--- a/test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -23,14 +23,27 @@
 
 /*
  * @test DynamicWrapperMBeanTest
- * @bug 6624232
+ * @bug 6624232 6776225
  * @summary Test the DynamicWrapperMBean interface
  * @author Eamonn McManus
  */
 
 import java.lang.management.ManagementFactory;
+import javax.annotation.Resource;
+import javax.management.JMX;
+import javax.management.ListenerNotFoundException;
+import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanServer;
+import javax.management.Notification;
+import javax.management.NotificationBroadcaster;
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.NotificationEmitter;
+import javax.management.NotificationFilter;
+import javax.management.NotificationInfo;
+import javax.management.NotificationListener;
 import javax.management.ObjectName;
+import javax.management.SendNotification;
+import javax.management.StandardEmitterMBean;
 import javax.management.StandardMBean;
 import javax.management.modelmbean.ModelMBeanInfo;
 import javax.management.modelmbean.ModelMBeanInfoSupport;
@@ -39,6 +52,25 @@
 import static javax.management.StandardMBean.Options;
 
 public class DynamicWrapperMBeanTest {
+    private static String failure;
+
+    public static void main(String[] args) throws Exception {
+        wrapTest();
+        notifTest();
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    private static final Options wrappedVisOpts = new Options();
+    private static final Options wrappedInvisOpts = new Options();
+    static {
+        wrappedVisOpts.setWrappedObjectVisible(true);
+        wrappedInvisOpts.setWrappedObjectVisible(false);
+    }
+
     public static interface WrappedMBean {
         public void sayHello();
     }
@@ -48,19 +80,13 @@
         }
     }
 
-    private static String failure;
-
-    public static void main(String[] args) throws Exception {
+    private static void wrapTest() throws Exception {
         if (Wrapped.class.getClassLoader() ==
                 StandardMBean.class.getClassLoader()) {
             throw new Exception(
                     "TEST ERROR: Resource and StandardMBean have same ClassLoader");
         }
 
-        Options wrappedVisOpts = new Options();
-        wrappedVisOpts.setWrappedObjectVisible(true);
-        Options wrappedInvisOpts = new Options();
-        wrappedInvisOpts.setWrappedObjectVisible(false);
         assertEquals("Options withWrappedObjectVisible(false)",
                      new Options(), wrappedInvisOpts);
 
@@ -138,8 +164,223 @@
         assertEquals("isInstanceOf(RequiredModelMBean) for invisible resource",
                 true, mbs.isInstanceOf(invisibleName, RequiredModelMBean.class.getName()));
 
-        if (failure != null)
-            throw new Exception("TEST FAILED: " + failure);
+        mbs.unregisterMBean(visibleName);
+        mbs.unregisterMBean(invisibleName);
+    }
+
+    private static enum WrapType {
+        NBS("NotificationBroadcasterSupport"),
+        INJ("@Resource SendNotification"),
+        STD_MBEAN_NBS("StandardMBean delegating to NotificationBroadcasterSupport"),
+        STD_MBEAN_INJ("StandardMBean delegating to @Resource SendNotification"),
+        STD_MBEAN_SUB_NBS("StandardMBean subclass implementing NotificationBroadcaster"),
+        STD_MBEAN_SUB_INJ("StandardMBean subclass with @Resource SendNotification"),
+        STD_EMIT_MBEAN_NBS("StandardEmitterMBean delegating to NotificationBroadcasterSupport"),
+        STD_EMIT_MBEAN_INJ("StandardEmitterMBean delegating to @Resource SendNotification"),
+        STD_EMIT_MBEAN_SUB("StandardEmitterMBean subclass"),
+        STD_EMIT_MBEAN_SUB_INJ("StandardEmitterMBean subclass with @Resource SendNotification");
+
+        WrapType(String s) {
+            this.s = s;
+        }
+
+        @Override
+        public String toString() {
+            return s;
+        }
+
+        private final String s;
+    }
+
+    @NotificationInfo(
+        types = {"foo", "bar"}
+    )
+    public static interface BroadcasterMBean {
+        public void send(Notification n);
+    }
+
+    public static class Broadcaster
+            extends NotificationBroadcasterSupport implements BroadcasterMBean {
+        public void send(Notification n) {
+            super.sendNotification(n);
+        }
+    }
+
+    public static interface SendNotifMBean extends BroadcasterMBean {
+    }
+
+    public static class SendNotif implements SendNotifMBean {
+        @Resource
+        private volatile SendNotification sendNotif;
+
+        public void send(Notification n) {
+            sendNotif.sendNotification(n);
+        }
+    }
+
+    public static class StdBroadcaster
+            extends StandardMBean
+            implements BroadcasterMBean, NotificationBroadcaster {
+        private final NotificationBroadcasterSupport nbs =
+                new NotificationBroadcasterSupport();
+
+        public StdBroadcaster() throws Exception {
+            super(BroadcasterMBean.class);
+        }
+
+        public void send(Notification n) {
+            nbs.sendNotification(n);
+        }
+
+        public void addNotificationListener(NotificationListener listener,
+                NotificationFilter filter, Object handback) {
+            nbs.addNotificationListener(listener, filter, handback);
+        }
+
+        public MBeanNotificationInfo[] getNotificationInfo() {
+            return null;
+        }
+
+        public void removeNotificationListener(NotificationListener listener)
+                throws ListenerNotFoundException {
+            nbs.removeNotificationListener(listener);
+        }
+    }
+
+    public static class StdSendNotif
+            extends StandardMBean implements SendNotifMBean {
+        @Resource
+        private volatile SendNotification sendNotif;
+
+        public StdSendNotif() throws Exception {
+            super(SendNotifMBean.class);
+        }
+
+        public void send(Notification n) {
+            sendNotif.sendNotification(n);
+        }
+    }
+
+    public static class StdEmitterBroadcaster // :-)
+            extends StandardEmitterMBean
+            implements BroadcasterMBean {
+
+        public StdEmitterBroadcaster() throws Exception {
+            super(BroadcasterMBean.class, null);
+        }
+
+        public void send(Notification n) {
+            super.sendNotification(n);
+        }
+    }
+
+    // This case is unlikely - if you're using @Resource SendNotification
+    // then there's no point in using StandardEmitterMBean, since
+    // StandardMBean would suffice.
+    public static class StdEmitterSendNotif
+            extends StandardEmitterMBean implements SendNotifMBean {
+        @Resource
+        private volatile SendNotification sendNotif;
+
+        public StdEmitterSendNotif() {
+            super(SendNotifMBean.class, null);
+        }
+
+        public void send(Notification n) {
+            sendNotif.sendNotification(n);
+        }
+    }
+
+    // Test that JMX.isNotificationSource and
+    // mbs.isInstanceOf("NotificationBroadcaster") work correctly even when
+    // the MBean is a broadcaster by virtue of its wrapped resource.
+    // Test that we find the MBeanNotificationInfo[] from the @NotificationInfo
+    // annotation on BroadcasterMBean.  We cover a large number of different
+    // MBean types, but all ultimately implement that interface.
+    private static void notifTest() throws Exception {
+        System.out.println("===Testing notification senders===");
+
+        for (WrapType wrapType : WrapType.values()) {
+            System.out.println("---" + wrapType);
+
+            final Object mbean;
+
+            switch (wrapType) {
+            case NBS:
+                // An MBean that extends NotificationBroadcasterSupport
+                mbean = new Broadcaster();
+                break;
+            case INJ:
+                // An MBean that injects SendNotification
+                mbean = new SendNotif();
+                break;
+            case STD_MBEAN_NBS:
+                // A StandardMBean that delegates to a NotificationBroadcasterSupport
+                mbean = new StandardMBean(
+                        new Broadcaster(), BroadcasterMBean.class, wrappedVisOpts);
+                break;
+            case STD_MBEAN_INJ:
+                // A StandardMBean that delegates to an object that injects
+                // SendNotification
+                mbean = new StandardMBean(
+                        new SendNotif(), BroadcasterMBean.class, wrappedVisOpts);
+                break;
+            case STD_EMIT_MBEAN_NBS: {
+                // A StandardEmitterMBean that delegates to a NotificationBroadcasterSupport
+                Broadcaster broadcaster = new Broadcaster();
+                mbean = new StandardEmitterMBean(
+                        broadcaster, BroadcasterMBean.class, wrappedVisOpts,
+                        broadcaster);
+                break;
+            }
+            case STD_EMIT_MBEAN_INJ: {
+                // A StandardEmitterMBean that delegates to an object that injects
+                // SendNotification
+                SendNotif sendNotif = new SendNotif();
+                mbean = new StandardEmitterMBean(
+                        sendNotif, BroadcasterMBean.class, wrappedVisOpts,
+                        null);
+                break;
+            }
+            case STD_MBEAN_SUB_NBS:
+                // A subclass of StandardMBean that implements NotificationBroadcaster
+                mbean = new StdBroadcaster();
+                break;
+            case STD_MBEAN_SUB_INJ:
+                // A subclass of StandardMBean that injects SendNotification
+                mbean = new StdSendNotif();
+                break;
+            case STD_EMIT_MBEAN_SUB:
+                // A subclass of StandardEmitterMBean
+                mbean = new StdEmitterBroadcaster();
+                break;
+            case STD_EMIT_MBEAN_SUB_INJ:
+                // A subclass of StandardEmitterMBean that injects SendNotification
+                // (which is a rather strange thing to do and probably a user
+                // misunderstanding but we should do the right thing anyway).
+                mbean = new StdEmitterSendNotif();
+                break;
+            default:
+                throw new AssertionError();
+            }
+
+            MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+
+            final ObjectName name = new ObjectName("a:type=Sender");
+            mbs.registerMBean(mbean, name);
+            boolean isBroadcaster = mbs.isInstanceOf(
+                    name, NotificationBroadcaster.class.getName());
+            assertEquals("JMX.isNotificationSource(mbean)",
+                    true, JMX.isNotificationSource(mbean));
+            assertEquals("isInstanceOf(NotificationBroadcaster)",
+                    true, isBroadcaster);
+            MBeanNotificationInfo[] mbnis =
+                    mbs.getMBeanInfo(name).getNotifications();
+            assertEquals("MBeanNotificationInfo not empty",
+                    true, (mbnis.length > 0));
+
+            mbs.unregisterMBean(name);
+        }
     }
 
     private static void assertEquals(String what, Object expect, Object actual) {
--- a/test/javax/management/MBeanServer/MBeanExceptionTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/MBeanServer/MBeanExceptionTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2004-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,16 +23,19 @@
 
 /*
  * @test
- * @bug 5035217
+ * @bug 5035217 6766173
  * @summary Test that MBean's RuntimeException is wrapped in
  * RuntimeMBeanException and (for Standard MBeans) that checked exceptions
  * are wrapped in MBeanException
  * @author Eamonn McManus
- * @compile -source 1.4 MBeanExceptionTest.java
+ * @compile MBeanExceptionTest.java
  * @run main MBeanExceptionTest
  */
 
+import java.util.Collections;
+import java.util.Set;
 import javax.management.*;
+import javax.management.namespace.MBeanServerSupport;
 
 public class MBeanExceptionTest {
     public static void main(String[] args) throws Exception {
@@ -56,6 +59,53 @@
         failures += test(mbs, standardName, true);
         failures += test(mbs, standardMBeanName, true);
         failures += test(mbs, dynamicName, false);
+
+        final boolean[] booleans = {false, true};
+
+        for (boolean mbss : booleans) {
+            for (boolean runtimeX : booleans) {
+                Class<? extends Exception> excC =
+                        runtimeX ? RuntimeMBeanException.class : MBeanException.class;
+                String excS =
+                        runtimeX ? "a RuntimeMBeanException" : "an MBeanException";
+                String mbsS =
+                        mbss ? "a conformant MBeanServerSupport" : "a plain MBeanServer";
+                MBeanServer xmbs =
+                        mbss ? new CreateExceptionMBS() : mbs;
+                System.out.println(
+                        "Test that, with " + mbsS + ", " + excS + " is wrapped " +
+                        "in " + excS);
+                // E.g. "Test that, with a plain MBeanServer, an MBeanException
+                // is wrapped in an MBeanException".
+                try {
+                    mbs.createMBean(
+                            Except.class.getName(), new ObjectName(":name=Oops"),
+                            new Object[] {runtimeX},
+                            new String[] {boolean.class.getName()});
+                    System.out.println(
+                            "FAIL: createMBean succeeded but should not have");
+                    failures++;
+                } catch (Exception e) {
+                    if (!excC.isInstance(e)) {
+                        System.out.println(
+                                "FAIL: expected " + excC.getName() + " from " +
+                                "createMBean, got " + e);
+                        failures++;
+                    } else {
+                        Throwable cause = e.getCause();
+                        if (!excC.isInstance(cause)) {
+                            System.out.println(
+                                    "FAIL: expected " + excC.getName() +
+                                    " as cause of " + excC.getName() +
+                                    ", got " + e);
+                            failures++;
+                        } else
+                            System.out.println("...ok");
+                    }
+                }
+            }
+        }
+
         if (failures == 0)
             System.out.println("Test passed");
         else {
@@ -153,6 +203,15 @@
     }
 
     public static class Except implements ExceptMBean {
+        public Except() {}
+
+        public Except(boolean runtimeX) throws MBeanException {
+            if (runtimeX)
+                throw new RuntimeMBeanException(new RuntimeException(), "Bang");
+            else
+                throw new MBeanException(new Exception(), "Bang");
+        }
+
         public String getUncheckedException() {
             throw theUncheckedException;
         }
@@ -221,4 +280,28 @@
     private static final RuntimeException theUncheckedException =
         new UnsupportedOperationException("The unchecked exception " +
                                           "that should be seen");
+
+    private static class CreateExceptionMBS extends MBeanServerSupport {
+        @Override
+        protected Set<ObjectName> getNames() {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public DynamicMBean getDynamicMBeanFor(ObjectName name)
+                throws InstanceNotFoundException {
+            throw new InstanceNotFoundException(name);
+        }
+
+        @Override
+        public ObjectInstance createMBean(String className,
+                ObjectName name, ObjectName loaderName, Object[] params,
+                String[] signature, boolean useCLR)
+                throws ReflectionException, InstanceAlreadyExistsException,
+                MBeanRegistrationException, MBeanException,
+                NotCompliantMBeanException, InstanceNotFoundException {
+            Exception wrapped = new MBeanException(new Exception(), "Bang");
+            throw new MBeanException(wrapped, "Bang");
+        }
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/ContextForwarderTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 5072267
+ * @summary Test that a context forwarder can be created and then installed.
+ * @author Eamonn McManus
+ */
+
+/* The specific thing we're testing for is that the forwarder can be created
+ * with a null "next", and then installed with a real "next".  An earlier
+ * defect meant that in this case the simulated jmx.context// namespace had a
+ * null handler that never changed.
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import javax.management.ClientContext;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.MBeanServerForwarder;
+
+public class ContextForwarderTest {
+    private static String failure;
+
+    public static void main(String[] args) throws Exception {
+        MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://");
+        Map<String, String> env = new HashMap<String, String>();
+        env.put(JMXConnectorServer.CONTEXT_FORWARDER, "false");
+        JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(
+                url, env, mbs);
+        MBeanServerForwarder sysMBSF = cs.getSystemMBeanServerForwarder();
+        MBeanServerForwarder mbsf = ClientContext.newContextForwarder(mbs, sysMBSF);
+        sysMBSF.setMBeanServer(mbsf);
+
+        int localCount = mbs.getMBeanCount();
+
+        cs.start();
+        try {
+            JMXConnector cc = JMXConnectorFactory.connect(cs.getAddress());
+            MBeanServerConnection mbsc = cc.getMBeanServerConnection();
+            mbsc = ClientContext.withContext(mbsc, "foo", "bar");
+            int contextCount = mbsc.getMBeanCount();
+            if (localCount + 1 != contextCount) {
+                fail("Local MBean count %d, context MBean count %d",
+                        localCount, contextCount);
+            }
+            Set<ObjectName> localNames =
+                    new TreeSet<ObjectName>(mbs.queryNames(null, null));
+            ObjectName contextNamespaceObjectName =
+                    new ObjectName(ClientContext.NAMESPACE + "//:type=JMXNamespace");
+            if (!localNames.add(contextNamespaceObjectName))
+                fail("Local names already contained context namespace handler");
+            Set<ObjectName> contextNames = mbsc.queryNames(null, null);
+            if (!localNames.equals(contextNames)) {
+                fail("Name set differs locally and in context: " +
+                        "local: %s; context: %s", localNames, contextNames);
+            }
+        } finally {
+            cs.stop();
+        }
+        if (failure != null)
+            throw new Exception("TEST FAILED: " + failure);
+        else
+            System.out.println("TEST PASSED");
+    }
+
+    private static void fail(String msg, Object... params) {
+        failure = String.format(msg, params);
+        System.out.println("FAIL: " + failure);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/ContextTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,534 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test ContextTest
+ * @bug 5072267
+ * @summary Test client contexts.
+ * @author Eamonn McManus
+ * TODO: Try registering with a null name replaced by preRegister (for example
+ * from the MLet class) and see if it now works.
+ */
+
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.concurrent.Callable;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.ClientContext;
+import javax.management.DynamicMBean;
+import javax.management.JMX;
+import javax.management.ListenerNotFoundException;
+import javax.management.MBeanNotificationInfo;
+import javax.management.MBeanRegistration;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerDelegate;
+import javax.management.Notification;
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.NotificationFilter;
+import javax.management.NotificationListener;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+import javax.management.loading.MLet;
+import javax.management.namespace.JMXNamespace;
+
+import javax.management.remote.MBeanServerForwarder;
+import static java.util.Collections.emptyMap;
+import static java.util.Collections.singletonMap;
+
+public class ContextTest {
+    private static String failure;
+    private static final Map<String, String> emptyContext = emptyMap();
+
+    public static interface ShowContextMBean {
+        public Map<String, String> getContext();
+        public Map<String, String> getCreationContext();
+        public Set<String> getCalledOps();
+        public String getThing();
+        public void setThing(String x);
+        public int add(int x, int y);
+    }
+
+    public static class ShowContext
+            extends NotificationBroadcasterSupport
+            implements ShowContextMBean, MBeanRegistration {
+        private final Map<String, String> creationContext;
+        private final Set<String> calledOps = new HashSet<String>();
+
+        public ShowContext() {
+            creationContext = getContext();
+        }
+
+        public Map<String, String> getContext() {
+            return ClientContext.getContext();
+        }
+
+        public Map<String, String> getCreationContext() {
+            return creationContext;
+        }
+
+        public Set<String> getCalledOps() {
+            return calledOps;
+        }
+
+        public String getThing() {
+            return "x";
+        }
+
+        public void setThing(String x) {
+        }
+
+        public int add(int x, int y) {
+            return x + y;
+        }
+
+        public ObjectName preRegister(MBeanServer server, ObjectName name) {
+            assertEquals("preRegister context", creationContext, getContext());
+            calledOps.add("preRegister");
+            return name;
+        }
+
+        public void postRegister(Boolean registrationDone) {
+            assertEquals("postRegister context", creationContext, getContext());
+            calledOps.add("postRegister");
+        }
+
+        // The condition checked here is not guaranteed universally true,
+        // but is true every time we unregister an instance of this MBean
+        // in this test.
+        public void preDeregister() throws Exception {
+            assertEquals("preDeregister context", creationContext, getContext());
+        }
+
+        public void postDeregister() {
+            assertEquals("postDeregister context", creationContext, getContext());
+        }
+
+        // Same remark as for preDeregister
+        @Override
+        public MBeanNotificationInfo[] getNotificationInfo() {
+            calledOps.add("getNotificationInfo");
+            return super.getNotificationInfo();
+        }
+
+        @Override
+        public void addNotificationListener(
+                NotificationListener listener, NotificationFilter filter, Object handback) {
+            calledOps.add("addNotificationListener");
+            super.addNotificationListener(listener, filter, handback);
+        }
+
+        @Override
+        public void removeNotificationListener(
+                NotificationListener listener)
+        throws ListenerNotFoundException {
+            calledOps.add("removeNL1");
+            super.removeNotificationListener(listener);
+        }
+
+        @Override
+        public void removeNotificationListener(
+                NotificationListener listener, NotificationFilter filter, Object handback)
+        throws ListenerNotFoundException {
+            calledOps.add("removeNL3");
+            super.removeNotificationListener(listener, filter, handback);
+        }
+    }
+
+    private static class LogRecord {
+        final String op;
+        final Object[] params;
+        final Map<String, String> context;
+        LogRecord(String op, Object[] params, Map<String, String> context) {
+            this.op = op;
+            this.params = params;
+            this.context = context;
+        }
+
+        @Override
+        public String toString() {
+            return op + Arrays.deepToString(params) + " " + context;
+        }
+    }
+
+    /*
+     * InvocationHandler that forwards all methods to a contained object
+     * but also records each forwarded method.  This allows us to check
+     * that the appropriate methods were called with the appropriate
+     * parameters.  It's similar to what's typically available in
+     * Mock Object frameworks.
+     */
+    private static class LogIH implements InvocationHandler {
+        private final Object wrapped;
+        Queue<LogRecord> log = new LinkedList<LogRecord>();
+
+        LogIH(Object wrapped) {
+            this.wrapped = wrapped;
+        }
+
+        public Object invoke(Object proxy, Method method, Object[] args)
+        throws Throwable {
+            if (method.getDeclaringClass() != Object.class) {
+                LogRecord lr =
+                    new LogRecord(
+                        method.getName(), args, ClientContext.getContext());
+                log.add(lr);
+            }
+            try {
+                return method.invoke(wrapped, args);
+            } catch (InvocationTargetException e) {
+                throw e.getCause();
+            }
+        }
+    }
+
+    private static <T> T newSnoop(Class<T> wrappedClass, LogIH logIH) {
+        return wrappedClass.cast(Proxy.newProxyInstance(
+                wrappedClass.getClassLoader(),
+                new Class<?>[] {wrappedClass},
+                logIH));
+    }
+
+    public static void main(String[] args) throws Exception {
+        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        System.out.println(mbs.queryNames(null, null));
+        ObjectName name = new ObjectName("a:b=c");
+        mbs.registerMBean(new ShowContext(), name);
+        final ShowContextMBean show =
+                JMX.newMBeanProxy(mbs, name, ShowContextMBean.class);
+
+        // Test local setting and getting within the MBeanServer
+
+        assertEquals("initial context", emptyContext, show.getContext());
+        ClientContext.doWithContext(singletonMap("foo", "bar"), new Callable<Void>() {
+            public Void call() {
+                assertEquals("context in doWithContext",
+                        singletonMap("foo", "bar"), show.getContext());
+                return null;
+            }
+        });
+        assertEquals("initial context after doWithContext",
+                emptyContext, show.getContext());
+        String got = ClientContext.doWithContext(
+                singletonMap("foo", "baz"), new Callable<String>() {
+            public String call() {
+                return ClientContext.getContext().get("foo");
+            }
+        });
+        assertEquals("value extracted from context", "baz", got);
+
+        Map<String, String> combined = ClientContext.doWithContext(
+                singletonMap("foo", "baz"), new Callable<Map<String, String>>() {
+            public Map<String, String> call() throws Exception {
+                return ClientContext.doWithContext(
+                        singletonMap("fred", "jim"),
+                        new Callable<Map<String, String>>() {
+                    public Map<String, String> call() {
+                        return ClientContext.getContext();
+                    }
+                });
+            }
+        });
+        assertEquals("nested doWithContext context",
+                singletonMap("fred", "jim"), combined);
+
+        final String ugh = "a!\u00c9//*=:\"% ";
+        ClientContext.doWithContext(singletonMap(ugh, ugh), new Callable<Void>() {
+            public Void call() {
+                assertEquals("context with tricky encoding",
+                        singletonMap(ugh, ugh), show.getContext());
+                return null;
+            }
+        });
+        Map<String, String> ughMap = new TreeMap<String, String>();
+        ughMap.put(ugh, ugh);
+        ughMap.put("fred", "jim");
+        // Since this is a TreeMap and "fred" is greater than ugh (which begins
+        // with "a"), we will see the encoding of ugh first in the output string.
+        String encoded = ClientContext.encode(ughMap);
+        String expectedUghCoding = "a%21%C3%89%2F%2F%2A%3D%3A%22%25+";
+        String expectedUghMapCoding =
+                ClientContext.NAMESPACE + "//" + expectedUghCoding + "=" +
+                expectedUghCoding + ";fred=jim";
+        assertEquals("hairy context encoded as string",
+                expectedUghMapCoding, encoded);
+
+        // Wrap the MBeanServer with a context MBSF so we can test withContext.
+        // Also check the simulated namespace directly.
+
+        LogIH mbsIH = new LogIH(mbs);
+        MBeanServer snoopMBS = newSnoop(MBeanServer.class, mbsIH);
+        MBeanServerForwarder ctxMBS =
+                ClientContext.newContextForwarder(snoopMBS, null);
+
+        // The MBSF returned by ClientContext is actually a compound of two
+        // forwarders, but that is supposed to be hidden by changing the
+        // behaviour of get/setMBeanServer.  Check that it is indeed so.
+        assertEquals("next MBS of context forwarder",
+                snoopMBS, ctxMBS.getMBeanServer());
+        // If the above assertion fails you may get a confusing message
+        // because the toString() of the two objects is likely to be the same
+        // so it will look as if they should be equal.
+        ctxMBS.setMBeanServer(null);
+        assertEquals("next MBS of context forwarder after setting it null",
+                null, ctxMBS.getMBeanServer());
+        ctxMBS.setMBeanServer(snoopMBS);
+
+        // The MBSF should look the same as the original MBeanServer except
+        // that it has the JMXNamespace for the simulated namespace.
+
+        Set<ObjectName> origNames = mbs.queryNames(null, null);
+        Set<ObjectName> mbsfNames = ctxMBS.queryNames(null, null);
+        assertEquals("number of MBeans returned by queryNames within forwarder",
+                origNames.size() + 1, mbsfNames.size());
+        assertEquals("MBeanCount within forwarder",
+                mbsfNames.size(), ctxMBS.getMBeanCount());
+        assertCalled(mbsIH, "queryNames", emptyContext);
+        assertCalled(mbsIH, "getMBeanCount", emptyContext);
+
+        ObjectName ctxNamespaceName = new ObjectName(
+                ClientContext.NAMESPACE + "//:" + JMXNamespace.TYPE_ASSIGNMENT);
+        origNames.add(ctxNamespaceName);
+        assertEquals("MBeans within forwarder", origNames, mbsfNames);
+        Set<String> domains = new HashSet<String>(Arrays.asList(ctxMBS.getDomains()));
+        assertEquals("domains include context namespace MBean",
+                true, domains.contains(ClientContext.NAMESPACE + "//"));
+        assertCalled(mbsIH, "getDomains", emptyContext);
+
+        // Now test ClientContext.withContext.
+
+        MBeanServer ughMBS = ClientContext.withContext(ctxMBS, ugh, ugh);
+
+        ShowContextMBean ughshow =
+                JMX.newMBeanProxy(ughMBS, name, ShowContextMBean.class);
+        Map<String, String> ughCtx = ughshow.getContext();
+        Map<String, String> ughExpect = singletonMap(ugh, ugh);
+        assertEquals("context seen by MBean accessed within namespace",
+                ughExpect, ughCtx);
+        assertCalled(mbsIH, "getAttribute", ughExpect, name, "Context");
+
+        MBeanServer cmbs = ClientContext.withContext(
+                ctxMBS, "mickey", "mouse");
+        ShowContextMBean cshow =
+                JMX.newMBeanProxy(cmbs, name, ShowContextMBean.class);
+        assertEquals("context seen by MBean accessed within namespace",
+                singletonMap("mickey", "mouse"), cshow.getContext());
+
+        MBeanServer ccmbs = ClientContext.withContext(
+                cmbs, "donald", "duck");
+        ShowContextMBean ccshow =
+                JMX.newMBeanProxy(ccmbs, name, ShowContextMBean.class);
+        Map<String, String> disney = new HashMap<String, String>();
+        disney.put("mickey", "mouse");
+        disney.put("donald", "duck");
+        assertEquals("context seen by MBean in nested namespace",
+                disney, ccshow.getContext());
+
+        // Test that all MBS ops produce reasonable results
+
+        ObjectName logger = new ObjectName("a:type=Logger");
+        DynamicMBean showMBean =
+                new StandardMBean(new ShowContext(), ShowContextMBean.class);
+        LogIH mbeanLogIH = new LogIH(showMBean);
+        DynamicMBean logMBean = newSnoop(DynamicMBean.class, mbeanLogIH);
+        ObjectInstance loggerOI = ccmbs.registerMBean(logMBean, logger);
+        assertEquals("ObjectName returned by createMBean",
+                logger, loggerOI.getObjectName());
+
+        // We get an getMBeanInfo call to determine the className in the
+        // ObjectInstance to return from registerMBean.
+        assertCalled(mbeanLogIH, "getMBeanInfo", disney);
+
+        ccmbs.getAttribute(logger, "Thing");
+        assertCalled(mbeanLogIH, "getAttribute", disney);
+
+        ccmbs.getAttributes(logger, new String[] {"Thing", "Context"});
+        assertCalled(mbeanLogIH, "getAttributes", disney);
+
+        ccmbs.setAttribute(logger, new Attribute("Thing", "bar"));
+        assertCalled(mbeanLogIH, "setAttribute", disney);
+
+        ccmbs.setAttributes(logger, new AttributeList(
+                Arrays.asList(new Attribute("Thing", "baz"))));
+        assertCalled(mbeanLogIH, "setAttributes", disney);
+
+        ccmbs.getMBeanInfo(logger);
+        assertCalled(mbeanLogIH, "getMBeanInfo", disney);
+
+        Set<ObjectName> names = ccmbs.queryNames(null, null);
+        Set<ObjectName> expectedNames = new HashSet<ObjectName>(
+                Collections.singleton(MBeanServerDelegate.DELEGATE_NAME));
+        assertEquals("context namespace query includes expected names",
+                true, names.containsAll(expectedNames));
+
+        Set<ObjectName> nsNames = ccmbs.queryNames(new ObjectName("*//:*"), null);
+        Set<ObjectName> expectedNsNames = new HashSet<ObjectName>(
+                Arrays.asList(
+                new ObjectName(ClientContext.NAMESPACE +
+                ObjectName.NAMESPACE_SEPARATOR + ":" +
+                JMXNamespace.TYPE_ASSIGNMENT)));
+        assertEquals("context namespace query includes namespace MBean",
+                true, nsNames.containsAll(expectedNsNames));
+
+
+
+        Set<ObjectInstance> insts = ccmbs.queryMBeans(
+                MBeanServerDelegate.DELEGATE_NAME, null);
+        assertEquals("size of set from MBeanServerDelegate query", 1, insts.size());
+        assertEquals("ObjectName from MBeanServerDelegate query",
+                MBeanServerDelegate.DELEGATE_NAME,
+                insts.iterator().next().getObjectName());
+
+        ObjectName createdName = new ObjectName("a:type=Created");
+        ObjectInstance createdOI =
+                ccmbs.createMBean(ShowContext.class.getName(), createdName);
+        assertEquals("class name from createMBean",
+                ShowContext.class.getName(), createdOI.getClassName());
+        assertEquals("ObjectName from createMBean",
+                createdName, createdOI.getObjectName());
+        assertEquals("context within createMBean",
+                disney, ccmbs.getAttribute(createdName, "CreationContext"));
+
+        NotificationListener nothingListener = new NotificationListener() {
+            public void handleNotification(Notification n, Object h) {}
+        };
+        ccmbs.addNotificationListener(createdName, nothingListener, null, null);
+        ccmbs.removeNotificationListener(createdName, nothingListener, null, null);
+        ccmbs.addNotificationListener(createdName, nothingListener, null, null);
+        ccmbs.removeNotificationListener(createdName, nothingListener);
+        Set<String> expectedOps = new HashSet<String>(Arrays.asList(
+                "preRegister", "postRegister", "addNotificationListener",
+                "removeNL1", "removeNL3", "getNotificationInfo"));
+        assertEquals("operations called on MBean",
+                expectedOps, ccmbs.getAttribute(createdName, "CalledOps"));
+
+        assertEquals("ClassLoader for MBean",
+                ShowContext.class.getClassLoader(),
+                ccmbs.getClassLoaderFor(createdName));
+
+        assertEquals("isRegistered", true, ccmbs.isRegistered(createdName));
+        assertEquals("isInstanceOf", true, ccmbs.isInstanceOf(createdName,
+                ShowContext.class.getName()));
+        assertEquals("isInstanceOf", false, ccmbs.isInstanceOf(createdName,
+                DynamicMBean.class.getName()));
+        ccmbs.unregisterMBean(createdName);
+        assertEquals("isRegistered after unregister",
+                false, ccmbs.isRegistered(createdName));
+
+        MLet mlet = new MLet();
+        ObjectName defaultMLetName = new ObjectName("DefaultDomain:type=MLet");
+
+        ccmbs.registerMBean(mlet, defaultMLetName);
+
+        assertEquals("getClassLoader", mlet, ccmbs.getClassLoader(defaultMLetName));
+
+        assertEquals("number of MBean operations", 0, mbeanLogIH.log.size());
+
+        // Test that contexts still work when we can't combine two encoded contexts.
+        // Here, we wrap cmbs (mickey=mouse) so that ccmbs2 (donald=duck) cannot
+        // see that it already contains a context and therefore cannot combine
+        // into mickey=mouse;donald=duck.  We don't actually use the snoop
+        // capabilities of the returned object -- we just want an opaque
+        // MBeanServer wrapper
+        MBeanServer cmbs2 = newSnoop(MBeanServer.class, new LogIH(cmbs));
+        MBeanServer ccmbs2 = ClientContext.withContext(cmbs2, "donald", "duck");
+        assertEquals("context when combination is impossible",
+                disney, ccmbs2.getAttribute(name, "Context"));
+
+        // Test failure cases of ClientContext.encode
+        final List<Map<String, String>> badEncodeArgs =
+                Arrays.asList(
+                    null,
+                    Collections.<String,String>singletonMap(null, "foo"),
+                    Collections.<String,String>singletonMap("foo", null));
+        for (Map<String, String> bad : badEncodeArgs) {
+            try {
+                String oops = ClientContext.encode(bad);
+                failed("ClientContext.encode(" + bad + ") should have failed: "
+                        + oops);
+            } catch (Exception e) {
+                assertEquals("Exception for ClientContext.encode(" + bad + ")",
+                        IllegalArgumentException.class, e.getClass());
+            }
+        }
+
+        // ADD NEW TESTS HERE ^^^
+
+        if (failure != null)
+            throw new Exception(failure);
+    }
+
+    private static void assertEquals(String what, Object x, Object y) {
+        if (!equal(x, y))
+            failed(what + ": expected " + string(x) + "; got " + string(y));
+    }
+
+    private static boolean equal(Object x, Object y) {
+        if (x == y)
+            return true;
+        if (x == null || y == null)
+            return false;
+        if (x.getClass().isArray())
+            return Arrays.deepEquals(new Object[] {x}, new Object[] {y});
+        return x.equals(y);
+    }
+
+    private static String string(Object x) {
+        String s = Arrays.deepToString(new Object[] {x});
+        return s.substring(1, s.length() - 1);
+    }
+
+    private static void assertCalled(
+            LogIH logIH, String op, Map<String, String> expectedContext) {
+        assertCalled(logIH, op, expectedContext, (Object[]) null);
+    }
+
+    private static void assertCalled(
+            LogIH logIH, String op, Map<String, String> expectedContext,
+            Object... params) {
+        LogRecord lr = logIH.log.remove();
+        assertEquals("called operation", op, lr.op);
+        if (params != null)
+            assertEquals("operation parameters", params, lr.params);
+        assertEquals("operation context", expectedContext, lr.context);
+    }
+
+    private static void failed(String why) {
+        failure = why;
+        new Throwable("FAILED: " + why).printStackTrace(System.out);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/LocaleAwareBroadcasterTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,328 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 5072267
+ * @summary Test that an MBean can handle localized Notification messages.
+ * @author Eamonn McManus
+ */
+
+import java.util.Collections;
+import java.util.ListResourceBundle;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.TimeUnit;
+import javax.management.ClientContext;
+import javax.management.JMX;
+import javax.management.ListenerNotFoundException;
+import javax.management.MBeanNotificationInfo;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerFactory;
+import javax.management.Notification;
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.NotificationEmitter;
+import javax.management.NotificationFilter;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+import javax.management.SendNotification;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+
+public class LocaleAwareBroadcasterTest {
+    static final ObjectName mbeanName = ObjectName.valueOf("d:type=LocaleAware");
+
+    static final String
+            messageKey = "broken.window",
+            defaultMessage = "broken window",
+            frenchMessage = "fen\u00eatre bris\u00e9e",
+            irishMessage = "fuinneog briste";
+
+    public static class Bundle extends ListResourceBundle {
+        @Override
+        protected Object[][] getContents() {
+            return new Object[][] {
+                {messageKey, defaultMessage},
+            };
+        }
+    }
+
+    public static class Bundle_fr extends ListResourceBundle {
+        @Override
+        protected Object[][] getContents() {
+            return new Object[][] {
+                {messageKey, frenchMessage},
+            };
+        }
+    }
+
+    public static class Bundle_ga extends ListResourceBundle {
+        @Override
+        protected Object[][] getContents() {
+            return new Object[][] {
+                {messageKey, irishMessage},
+            };
+        }
+    }
+
+    static volatile String failure;
+
+    public static interface LocaleAwareMBean {
+        public void sendNotification(Notification n);
+    }
+
+    public static class LocaleAware
+            implements LocaleAwareMBean, NotificationEmitter, SendNotification {
+
+        private final ConcurrentMap<Locale, NotificationBroadcasterSupport>
+                localeToEmitter = newConcurrentMap();
+
+        public void sendNotification(Notification n) {
+            for (Map.Entry<Locale, NotificationBroadcasterSupport> entry :
+                    localeToEmitter.entrySet()) {
+                Notification localizedNotif =
+                        localizeNotification(n, entry.getKey());
+                entry.getValue().sendNotification(localizedNotif);
+            }
+        }
+
+        public void addNotificationListener(
+                NotificationListener listener,
+                NotificationFilter filter,
+                Object handback)
+                throws IllegalArgumentException {
+            Locale locale = ClientContext.getLocale();
+            NotificationBroadcasterSupport broadcaster;
+            broadcaster = localeToEmitter.get(locale);
+            if (broadcaster == null) {
+                broadcaster = new NotificationBroadcasterSupport();
+                NotificationBroadcasterSupport old =
+                        localeToEmitter.putIfAbsent(locale, broadcaster);
+                if (old != null)
+                    broadcaster = old;
+            }
+            broadcaster.addNotificationListener(listener, filter, handback);
+        }
+
+        public void removeNotificationListener(NotificationListener listener)
+                throws ListenerNotFoundException {
+            Locale locale = ClientContext.getLocale();
+            NotificationBroadcasterSupport broadcaster =
+                    localeToEmitter.get(locale);
+            if (broadcaster == null)
+                throw new ListenerNotFoundException();
+            broadcaster.removeNotificationListener(listener);
+        }
+
+        public void removeNotificationListener(
+                NotificationListener listener,
+                NotificationFilter filter,
+                Object handback)
+                throws ListenerNotFoundException {
+            Locale locale = ClientContext.getLocale();
+            NotificationBroadcasterSupport broadcaster =
+                    localeToEmitter.get(locale);
+            if (broadcaster == null)
+                throw new ListenerNotFoundException();
+            broadcaster.removeNotificationListener(listener, filter, handback);
+        }
+
+        public MBeanNotificationInfo[] getNotificationInfo() {
+            return new MBeanNotificationInfo[0];
+        }
+    }
+
+    // Localize notif using the convention that the message looks like
+    // [resourcebundlename:resourcekey]defaultmessage
+    // for example [foo.bar.Resources:unknown.problem]
+    static Notification localizeNotification(Notification n, Locale locale) {
+        String msg = n.getMessage();
+        if (!msg.startsWith("["))
+            return n;
+        int close = msg.indexOf(']');
+        if (close < 0)
+            throw new IllegalArgumentException("Bad notification message: " + msg);
+        int colon = msg.indexOf(':');
+        if (colon < 0 || colon > close)
+            throw new IllegalArgumentException("Bad notification message: " + msg);
+        String bundleName = msg.substring(1, colon);
+        String key = msg.substring(colon + 1, close);
+        ClassLoader loader = LocaleAwareBroadcasterTest.class.getClassLoader();
+        ResourceBundle bundle =
+                ResourceBundle.getBundle(bundleName, locale, loader);
+        try {
+            msg = bundle.getString(key);
+        } catch (MissingResourceException e) {
+            msg = msg.substring(close + 1);
+        }
+        n = (Notification) n.clone();
+        n.setMessage(msg);
+        return n;
+    }
+
+    public static void main(String[] args) throws Exception {
+        Locale.setDefault(new Locale("en"));
+        testLocal();
+        testRemote();
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    static interface AddListenerInLocale {
+        public void addListenerInLocale(
+                MBeanServerConnection mbsc,
+                NotificationListener listener,
+                Locale locale) throws Exception;
+    }
+
+    private static void testLocal() throws Exception {
+        System.out.println("Test local MBeanServer using doWithContext");
+        MBeanServer mbs = makeMBS();
+        AddListenerInLocale addListener = new AddListenerInLocale() {
+            public void addListenerInLocale(
+                    final MBeanServerConnection mbsc,
+                    final NotificationListener listener,
+                    Locale locale) throws Exception {
+                Map<String, String> localeContext = Collections.singletonMap(
+                        ClientContext.LOCALE_KEY, locale.toString());
+                ClientContext.doWithContext(
+                        localeContext, new Callable<Void>() {
+                    public Void call() throws Exception {
+                        mbsc.addNotificationListener(
+                                mbeanName, listener, null, null);
+                        return null;
+                    }
+                });
+            }
+        };
+        test(mbs, addListener);
+    }
+
+    private static void testRemote() throws Exception {
+        System.out.println("Test remote MBeanServer using withLocale");
+        MBeanServer mbs = makeMBS();
+        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://");
+        JMXConnectorServer cs =
+                JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
+        cs.start();
+        JMXServiceURL addr = cs.getAddress();
+        JMXConnector cc = JMXConnectorFactory.connect(addr);
+        MBeanServerConnection mbsc = cc.getMBeanServerConnection();
+        AddListenerInLocale addListenerInLocale = new AddListenerInLocale() {
+            public void addListenerInLocale(
+                    MBeanServerConnection mbsc,
+                    NotificationListener listener,
+                    Locale locale) throws Exception {
+                mbsc = ClientContext.withLocale(mbsc, locale);
+                mbsc.addNotificationListener(mbeanName, listener, null, null);
+            }
+        };
+        try {
+            test(mbsc, addListenerInLocale);
+        } finally {
+            try {
+                cc.close();
+            } catch (Exception e) {}
+            cs.stop();
+        }
+    }
+
+    static class QueueListener implements NotificationListener {
+        final BlockingQueue<Notification> queue =
+                new ArrayBlockingQueue<Notification>(10);
+
+        public void handleNotification(Notification notification,
+                                       Object handback) {
+            queue.add(notification);
+        }
+    }
+
+    private static void test(
+            MBeanServerConnection mbsc, AddListenerInLocale addListener)
+            throws Exception {
+        QueueListener defaultListener = new QueueListener();
+        QueueListener frenchListener = new QueueListener();
+        QueueListener irishListener = new QueueListener();
+        mbsc.addNotificationListener(mbeanName, defaultListener, null, null);
+        addListener.addListenerInLocale(mbsc, frenchListener, new Locale("fr"));
+        addListener.addListenerInLocale(mbsc, irishListener, new Locale("ga"));
+
+        LocaleAwareMBean proxy =
+                JMX.newMBeanProxy(mbsc, mbeanName, LocaleAwareMBean.class);
+        String notifMsg = "[" + Bundle.class.getName() + ":" + messageKey + "]" +
+                "broken window (default message that should never be seen)";
+        Notification notif = new Notification(
+                "notif.type", mbeanName, 0L, notifMsg);
+        proxy.sendNotification(notif);
+
+        final Object[][] expected = {
+            {defaultListener, defaultMessage},
+            {frenchListener, frenchMessage},
+            {irishListener, irishMessage},
+        };
+        for (Object[] exp : expected) {
+            QueueListener ql = (QueueListener) exp[0];
+            String msg = (String) exp[1];
+            System.out.println("Checking: " + msg);
+            Notification n = ql.queue.poll(1, TimeUnit.SECONDS);
+            if (n == null)
+                fail("Did not receive expected notif: " + msg);
+            if (!n.getMessage().equals(msg)) {
+                fail("Received notif with wrong message: got " +
+                        n.getMessage() + ", expected " + msg);
+            }
+            n = ql.queue.poll(2, TimeUnit.MILLISECONDS);
+            if (n != null)
+                fail("Received unexpected extra notif: " + n);
+        }
+    }
+
+    private static MBeanServer makeMBS() throws Exception {
+        MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+        LocaleAware aware = new LocaleAware();
+        mbs.registerMBean(aware, mbeanName);
+        return mbs;
+    }
+
+    static <K, V> ConcurrentMap<K, V> newConcurrentMap() {
+        return new ConcurrentHashMap<K, V>();
+    }
+
+    static void fail(String why) {
+        System.out.println("FAIL: " + why);
+        failure = why;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/LocaleTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test LocaleTest.java
+ * @bug 5072267
+ * @summary Test client locales.
+ * @author Eamonn McManus
+ */
+
+import java.lang.management.ManagementFactory;
+import java.util.Collections;
+import java.util.ListResourceBundle;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.concurrent.Callable;
+import javax.management.ClientContext;
+import java.util.Arrays;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+public class LocaleTest {
+    private static String failure;
+
+    public static void main(String[] args) throws Exception {
+
+        // Test the translation String -> Locale
+
+        Locale[] locales = Locale.getAvailableLocales();
+        System.out.println("Testing String->Locale for " + locales.length +
+                " locales");
+        for (Locale loc : locales) {
+            Map<String, String> ctx = Collections.singletonMap(
+                    ClientContext.LOCALE_KEY, loc.toString());
+            Locale loc2 = ClientContext.doWithContext(
+                    ctx, new Callable<Locale>() {
+                public Locale call() {
+                    return ClientContext.getLocale();
+                }
+            });
+            assertEquals(loc, loc2);
+        }
+
+        // Test that a locale-sensitive attribute works
+
+        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        mbs = ClientContext.newContextForwarder(mbs, null);
+        ObjectName name = new ObjectName("a:type=LocaleSensitive");
+        mbs.registerMBean(new LocaleSensitive(), name);
+        Locale.setDefault(Locale.US);
+
+        assertEquals("spectacular failure",
+                mbs.getAttribute(name, "LastProblemDescription"));
+
+        MBeanServer frmbs = ClientContext.withContext(
+                mbs, ClientContext.LOCALE_KEY, Locale.FRANCE.toString());
+        assertEquals("\u00e9chec r\u00e9tentissant",
+                frmbs.getAttribute(name, "LastProblemDescription"));
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    public static interface LocaleSensitiveMBean {
+        public String getLastProblemDescription();
+    }
+
+    public static class LocaleSensitive implements LocaleSensitiveMBean {
+        public String getLastProblemDescription() {
+            Locale loc = ClientContext.getLocale();
+            ResourceBundle rb = ResourceBundle.getBundle(
+                    MyResources.class.getName(), loc);
+            return rb.getString("spectacular");
+        }
+    }
+
+    public static class MyResources extends ListResourceBundle {
+        protected Object[][] getContents() {
+            return new Object[][] {
+                {"spectacular", "spectacular failure"},
+            };
+        }
+    }
+
+    public static class MyResources_fr extends ListResourceBundle {
+        protected Object[][] getContents() {
+            return new Object[][] {
+                {"spectacular", "\u00e9chec r\u00e9tentissant"},
+            };
+        }
+    }
+
+    private static void assertEquals(Object x, Object y) {
+        if (!equal(x, y))
+            failed("expected " + string(x) + "; got " + string(y));
+    }
+
+    private static boolean equal(Object x, Object y) {
+        if (x == y)
+            return true;
+        if (x == null || y == null)
+            return false;
+        if (x.getClass().isArray())
+            return Arrays.deepEquals(new Object[] {x}, new Object[] {y});
+        return x.equals(y);
+    }
+
+    private static String string(Object x) {
+        String s = Arrays.deepToString(new Object[] {x});
+        return s.substring(1, s.length() - 1);
+    }
+
+    private static void failed(String why) {
+        failure = why;
+        new Throwable("FAILED: " + why).printStackTrace(System.out);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/LocalizableTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,192 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test LocalizableTest
+ * @bug 5072267 6635499
+ * @summary Test localizable MBeanInfo using LocalizableMBeanFactory.
+ * @author Eamonn McManus
+ */
+
+import java.lang.management.ManagementFactory;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import javax.management.ClientContext;
+import javax.management.Description;
+import javax.management.JMX;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanConstructorInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import localizable.MBeanDescriptions_fr;
+import localizable.Whatsit;
+
+import static localizable.WhatsitMBean.*;
+
+public class LocalizableTest {
+    // If you change the order of the array elements or their number then
+    // you must also change these constants.
+    private static final int
+            MBEAN = 0, ATTR = 1, OPER = 2, PARAM = 3, CONSTR = 4,
+            CONSTR_PARAM = 5;
+    private static final String[] englishDescriptions = {
+        englishMBeanDescription, englishAttrDescription, englishOperDescription,
+        englishParamDescription, englishConstrDescription,
+        englishConstrParamDescription,
+    };
+    private static final String[] defaultDescriptions = englishDescriptions.clone();
+    static {
+        defaultDescriptions[MBEAN] = defaultMBeanDescription;
+    }
+    private static final String[] frenchDescriptions = {
+        frenchMBeanDescription, frenchAttrDescription, frenchOperDescription,
+        frenchParamDescription, frenchConstrDescription,
+        frenchConstrParamDescription,
+    };
+
+    private static String failure;
+
+    @Description(unlocalizedMBeanDescription)
+    public static interface UnlocalizedMBean {}
+    public static class Unlocalized implements UnlocalizedMBean {}
+
+    public static void main(String[] args) throws Exception {
+        ResourceBundle frenchBundle = new MBeanDescriptions_fr();
+        // The purpose of the previous line is to force that class to be compiled
+        // when the test is run so it will be available for reflection.
+        // Yes, we could do this with a @build tag.
+
+        MBeanServer plainMBS = ManagementFactory.getPlatformMBeanServer();
+        MBeanServer unlocalizedMBS =
+                ClientContext.newContextForwarder(plainMBS, null);
+        MBeanServer localizedMBS =
+                ClientContext.newLocalizeMBeanInfoForwarder(plainMBS);
+        localizedMBS = ClientContext.newContextForwarder(localizedMBS, null);
+        ObjectName name = new ObjectName("a:b=c");
+
+        Whatsit whatsit = new Whatsit();
+        Object[][] locales = {
+            {null, englishDescriptions},
+            {"en", englishDescriptions},
+            {"fr", frenchDescriptions},
+        };
+
+        for (Object[] localePair : locales) {
+            String locale = (String) localePair[0];
+            String[] localizedDescriptions = (String[]) localePair[1];
+            System.out.println("===Testing locale " + locale + "===");
+            for (boolean localized : new boolean[] {false, true}) {
+                String[] descriptions = localized ?
+                    localizedDescriptions : defaultDescriptions;
+                MBeanServer mbs = localized ? localizedMBS : unlocalizedMBS;
+                System.out.println("Testing MBean " + whatsit + " with " +
+                        "localized=" + localized);
+                mbs.registerMBean(whatsit, name);
+                System.out.println(mbs.getMBeanInfo(name));
+                try {
+                    test(mbs, name, locale, descriptions);
+                } catch (Exception e) {
+                    fail("Caught exception: " + e);
+                } finally {
+                    mbs.unregisterMBean(name);
+                }
+            }
+        }
+
+        System.out.println("===Testing unlocalizable MBean===");
+        Object mbean = new Unlocalized();
+        localizedMBS.registerMBean(mbean, name);
+        try {
+            MBeanInfo mbi = localizedMBS.getMBeanInfo(name);
+            assertEquals("MBean description", unlocalizedMBeanDescription,
+                    mbi.getDescription());
+        } finally {
+            localizedMBS.unregisterMBean(name);
+        }
+
+        System.out.println("===Testing MBeanInfo.localizeDescriptions===");
+        plainMBS.registerMBean(whatsit, name);
+        MBeanInfo mbi = plainMBS.getMBeanInfo(name);
+        Locale french = new Locale("fr");
+        mbi = mbi.localizeDescriptions(french, whatsit.getClass().getClassLoader());
+        checkDescriptions(mbi, frenchDescriptions);
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: Last failure: " + failure);
+    }
+
+    private static void test(MBeanServer mbs, ObjectName name, String locale,
+                             String[] expectedDescriptions)
+    throws Exception {
+        if (locale != null)
+            mbs = ClientContext.withLocale(mbs, new Locale(locale));
+        MBeanInfo mbi = mbs.getMBeanInfo(name);
+        checkDescriptions(mbi, expectedDescriptions);
+    }
+
+    private static void checkDescriptions(MBeanInfo mbi,
+                                          String[] expectedDescriptions) {
+        assertEquals("MBean description",
+                     expectedDescriptions[MBEAN], mbi.getDescription());
+        MBeanAttributeInfo mbai = mbi.getAttributes()[0];
+        assertEquals("Attribute description",
+                     expectedDescriptions[ATTR], mbai.getDescription());
+        MBeanOperationInfo mboi = mbi.getOperations()[0];
+        assertEquals("Operation description",
+                     expectedDescriptions[OPER], mboi.getDescription());
+        MBeanParameterInfo mbpi = mboi.getSignature()[0];
+        assertEquals("Parameter description",
+                     expectedDescriptions[PARAM], mbpi.getDescription());
+        MBeanConstructorInfo[] mbcis = mbi.getConstructors();
+        assertEquals("Number of constructors", 2, mbcis.length);
+        for (MBeanConstructorInfo mbci : mbcis) {
+            MBeanParameterInfo[] mbcpis = mbci.getSignature();
+            String constrName = mbcpis.length + "-arg constructor";
+            assertEquals(constrName + " description",
+                    expectedDescriptions[CONSTR], mbci.getDescription());
+            if (mbcpis.length > 0) {
+                assertEquals(constrName + " parameter description",
+                        expectedDescriptions[CONSTR_PARAM],
+                        mbcpis[0].getDescription());
+            }
+        }
+    }
+
+    private static void assertEquals(String what, Object expect, Object actual) {
+        if (expect.equals(actual))
+            System.out.println("...OK: " + what + " = " + expect);
+        else
+            fail(what + " should be " + expect + ", was " + actual);
+    }
+
+    private static void fail(String why) {
+        System.out.println("FAIL: " + why);
+        failure = why;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/RemoteContextTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,496 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test RemoteContextTest.java
+ * @bug 5072267
+ * @summary Test client contexts with namespaces.
+ * @author Eamonn McManus, Daniel Fuchs
+ */
+
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.net.URLEncoder;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.ClientContext;
+import javax.management.DynamicMBean;
+import javax.management.JMX;
+import javax.management.ListenerNotFoundException;
+import javax.management.MBeanNotificationInfo;
+import javax.management.MBeanRegistration;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerDelegate;
+import javax.management.Notification;
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.NotificationFilter;
+import javax.management.NotificationListener;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+import javax.management.loading.MLet;
+import javax.management.namespace.JMXNamespaces;
+import javax.management.namespace.JMXRemoteNamespace;
+import javax.management.namespace.JMXNamespace;
+
+import static java.util.Collections.singletonMap;
+import javax.management.MBeanServerFactory;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+
+public class RemoteContextTest {
+    private static String failure;
+
+    public static interface ShowContextMBean {
+        public Map<String, String> getContext();
+        public Map<String, String> getCreationContext();
+        public Set<String> getCalledOps();
+        public String getThing();
+        public void setThing(String x);
+        public int add(int x, int y);
+    }
+
+    public static class ShowContext
+            extends NotificationBroadcasterSupport
+            implements ShowContextMBean, MBeanRegistration {
+        private final Map<String, String> creationContext;
+        private final Set<String> calledOps = new HashSet<String>();
+
+        public ShowContext() {
+            creationContext = getContext();
+        }
+
+        public Map<String, String> getContext() {
+            return ClientContext.getContext();
+        }
+
+        public Map<String, String> getCreationContext() {
+            return creationContext;
+        }
+
+        public Set<String> getCalledOps() {
+            return calledOps;
+        }
+
+        public String getThing() {
+            return "x";
+        }
+
+        public void setThing(String x) {
+        }
+
+        public int add(int x, int y) {
+            return x + y;
+        }
+
+        public ObjectName preRegister(MBeanServer server, ObjectName name) {
+            assertEquals(creationContext, getContext());
+            calledOps.add("preRegister");
+            return name;
+        }
+
+        public void postRegister(Boolean registrationDone) {
+            assertEquals(creationContext, getContext());
+            calledOps.add("postRegister");
+        }
+
+        // The condition checked here is not guaranteed universally true,
+        // but is true every time we unregister an instance of this MBean
+        // in this test.
+        public void preDeregister() throws Exception {
+            assertEquals(creationContext, getContext());
+        }
+
+        public void postDeregister() {
+            assertEquals(creationContext, getContext());
+        }
+
+        // Same remark as for preDeregister
+        @Override
+        public MBeanNotificationInfo[] getNotificationInfo() {
+            calledOps.add("getNotificationInfo");
+            return super.getNotificationInfo();
+        }
+
+        @Override
+        public void addNotificationListener(
+                NotificationListener listener, NotificationFilter filter, Object handback) {
+            calledOps.add("addNotificationListener");
+            super.addNotificationListener(listener, filter, handback);
+        }
+
+        @Override
+        public void removeNotificationListener(
+                NotificationListener listener)
+        throws ListenerNotFoundException {
+            calledOps.add("removeNL1");
+            super.removeNotificationListener(listener);
+        }
+
+        @Override
+        public void removeNotificationListener(
+                NotificationListener listener, NotificationFilter filter, Object handback)
+        throws ListenerNotFoundException {
+            calledOps.add("removeNL3");
+            super.removeNotificationListener(listener, filter, handback);
+        }
+    }
+
+    private static class LogRecord {
+        final String op;
+        final Object[] params;
+        final Map<String, String> context;
+        LogRecord(String op, Object[] params, Map<String, String> context) {
+            this.op = op;
+            this.params = params;
+            this.context = context;
+        }
+
+        @Override
+        public String toString() {
+            return op + Arrays.deepToString(params) + " " + context;
+        }
+    }
+
+    private static class LogIH implements InvocationHandler {
+        private final Object wrapped;
+        Queue<LogRecord> log = new LinkedList<LogRecord>();
+
+        LogIH(Object wrapped) {
+            this.wrapped = wrapped;
+        }
+
+        public Object invoke(Object proxy, Method method, Object[] args)
+        throws Throwable {
+            if (method.getDeclaringClass() != Object.class) {
+                LogRecord lr =
+                    new LogRecord(
+                        method.getName(), args, ClientContext.getContext());
+                log.add(lr);
+            }
+            try {
+                return method.invoke(wrapped, args);
+            } catch (InvocationTargetException e) {
+                throw e.getCause();
+            }
+        }
+    }
+
+    private static <T> T newSnoop(Class<T> wrappedClass, LogIH logIH) {
+        return wrappedClass.cast(Proxy.newProxyInstance(
+                wrappedClass.getClassLoader(),
+                new Class<?>[] {wrappedClass},
+                logIH));
+    }
+
+    public static void main(String[] args) throws Exception {
+        final String subnamespace = "sub";
+        final ObjectName locname = new ObjectName("a:b=c");
+        final ObjectName name = JMXNamespaces.insertPath(subnamespace,locname);
+        final MBeanServer mbs = ClientContext.newContextForwarder(
+                ManagementFactory.getPlatformMBeanServer(), null);
+        final MBeanServer sub = ClientContext.newContextForwarder(
+                MBeanServerFactory.newMBeanServer(), null);
+        final JMXServiceURL anonym = new JMXServiceURL("rmi",null,0);
+        final Map<String, Object> env = Collections.emptyMap();
+        final Map<String, String> emptyContext = Collections.emptyMap();
+        final JMXConnectorServer srv =
+                JMXConnectorServerFactory.newJMXConnectorServer(anonym,env,sub);
+        sub.registerMBean(new ShowContext(), locname);
+
+        srv.start();
+
+        try {
+        JMXRemoteNamespace subns = JMXRemoteNamespace.
+            newJMXRemoteNamespace(srv.getAddress(),null);
+        mbs.registerMBean(subns, JMXNamespaces.getNamespaceObjectName("sub"));
+        mbs.invoke(JMXNamespaces.getNamespaceObjectName("sub"),
+               "connect", null,null);
+        final ShowContextMBean show =
+                JMX.newMBeanProxy(mbs, name, ShowContextMBean.class);
+
+        assertEquals(emptyContext, show.getContext());
+        ClientContext.doWithContext(singletonMap("foo", "bar"), new Callable<Void>() {
+            public Void call() {
+                assertEquals(singletonMap("foo", "bar"), show.getContext());
+                return null;
+            }
+        });
+        assertEquals(emptyContext, show.getContext());
+        String got = ClientContext.doWithContext(
+                singletonMap("foo", "baz"), new Callable<String>() {
+            public String call() {
+                return ClientContext.getContext().get("foo");
+            }
+        });
+        assertEquals("baz", got);
+
+        Map<String, String> combined = ClientContext.doWithContext(
+                singletonMap("foo", "baz"), new Callable<Map<String, String>>() {
+            public Map<String, String> call() throws Exception {
+                return ClientContext.doWithContext(
+                        singletonMap("fred", "jim"),
+                        new Callable<Map<String, String>>() {
+                    public Map<String, String> call() {
+                        return ClientContext.getContext();
+                    }
+                });
+            }
+        });
+        assertEquals(singletonMap("fred", "jim"), combined);
+
+        final String ugh = "a!?//*=:\"% ";
+        ClientContext.doWithContext(singletonMap(ugh, ugh), new Callable<Void>() {
+            public Void call() {
+                assertEquals(Collections.singletonMap(ugh, ugh),
+                        ClientContext.getContext());
+                return null;
+            }
+        });
+
+        // Basic withContext tests
+
+        LogIH mbsIH = new LogIH(mbs);
+        MBeanServer snoopMBS = newSnoop(MBeanServer.class, mbsIH);
+        MBeanServer ughMBS = ClientContext.withContext(snoopMBS, ugh, ugh);
+        // ughMBS is never referenced but we check that the withContext call
+        // included a call to snoopMBS.isRegistered.
+        String encodedUgh = URLEncoder.encode(ugh, "UTF-8").replace("*", "%2A");
+        ObjectName expectedName = new ObjectName(
+                ClientContext.NAMESPACE + ObjectName.NAMESPACE_SEPARATOR +
+                encodedUgh + "=" + encodedUgh +
+                ObjectName.NAMESPACE_SEPARATOR + ":" +
+                JMXNamespace.TYPE_ASSIGNMENT);
+        assertCalled(mbsIH, "isRegistered", new Object[] {expectedName},
+                emptyContext);
+
+        // Test withDynamicContext
+
+        MBeanServerConnection dynamicSnoop =
+                ClientContext.withDynamicContext(snoopMBS);
+        assertCalled(mbsIH, "isRegistered",
+                new Object[] {
+                    JMXNamespaces.getNamespaceObjectName(ClientContext.NAMESPACE)
+                },
+                emptyContext);
+        final ShowContextMBean dynamicShow =
+                JMX.newMBeanProxy(dynamicSnoop, name, ShowContextMBean.class);
+        assertEquals(Collections.emptyMap(), dynamicShow.getContext());
+        assertCalled(mbsIH, "getAttribute", new Object[] {name, "Context"},
+                emptyContext);
+
+        Map<String, String> expectedDynamic =
+                Collections.singletonMap("gladstone", "gander");
+        Map<String, String> dynamic = ClientContext.doWithContext(
+                expectedDynamic,
+                new Callable<Map<String, String>>() {
+                    public Map<String, String> call() throws Exception {
+                        return dynamicShow.getContext();
+                    }
+                });
+        assertEquals(expectedDynamic, dynamic);
+        ObjectName expectedDynamicName = new ObjectName(
+                ClientContext.encode(expectedDynamic) +
+                ObjectName.NAMESPACE_SEPARATOR + name);
+        assertCalled(mbsIH, "getAttribute",
+                new Object[] {expectedDynamicName, "Context"}, dynamic);
+
+        MBeanServer cmbs = ClientContext.withContext(
+                mbs, "mickey", "mouse");
+        ShowContextMBean cshow =
+                JMX.newMBeanProxy(cmbs, name, ShowContextMBean.class);
+        assertEquals(Collections.singletonMap("mickey", "mouse"), cshow.getContext());
+
+        MBeanServer ccmbs = ClientContext.withContext(
+                cmbs, "donald", "duck");
+        ShowContextMBean ccshow =
+                JMX.newMBeanProxy(ccmbs, name, ShowContextMBean.class);
+        Map<String, String> disney = new HashMap<String, String>();
+        disney.put("mickey", "mouse");
+        disney.put("donald", "duck");
+        assertEquals(disney, ccshow.getContext());
+
+        // Test that all MBS ops produce reasonable results
+
+        ObjectName logger = new ObjectName("a:type=Logger");
+        DynamicMBean showMBean =
+                new StandardMBean(new ShowContext(), ShowContextMBean.class);
+        LogIH mbeanLogIH = new LogIH(showMBean);
+        DynamicMBean logMBean = newSnoop(DynamicMBean.class, mbeanLogIH);
+        ObjectInstance loggerOI = ccmbs.registerMBean(logMBean, logger);
+        assertEquals(logger, loggerOI.getObjectName());
+
+        // We get a getMBeanInfo call to determine the className in the
+        // ObjectInstance to return from registerMBean.
+        assertCalled(mbeanLogIH, "getMBeanInfo", disney);
+
+        ccmbs.getAttribute(logger, "Thing");
+        assertCalled(mbeanLogIH, "getAttribute", disney);
+
+        ccmbs.getAttributes(logger, new String[] {"Thing", "Context"});
+        assertCalled(mbeanLogIH, "getAttributes", disney);
+
+        ccmbs.setAttribute(logger, new Attribute("Thing", "bar"));
+        assertCalled(mbeanLogIH, "setAttribute", disney);
+
+        ccmbs.setAttributes(logger, new AttributeList(
+                Arrays.asList(new Attribute("Thing", "baz"))));
+        assertCalled(mbeanLogIH, "setAttributes", disney);
+
+        ccmbs.getMBeanInfo(logger);
+        assertCalled(mbeanLogIH, "getMBeanInfo", disney);
+
+        Set<ObjectName> names = ccmbs.queryNames(null, null);
+        Set<ObjectName> expectedNames = new HashSet<ObjectName>(
+                Collections.singleton(MBeanServerDelegate.DELEGATE_NAME));
+        expectedNames.removeAll(names);
+        assertEquals(0, expectedNames.size());
+
+        Set<ObjectName> nsNames =
+                ccmbs.queryNames(new ObjectName("**?*?//:*"), null);
+        Set<ObjectName> expectedNsNames = new HashSet<ObjectName>(
+                Arrays.asList(
+                new ObjectName(ClientContext.NAMESPACE +
+                ObjectName.NAMESPACE_SEPARATOR + ":" +
+                JMXNamespace.TYPE_ASSIGNMENT)));
+        expectedNsNames.removeAll(nsNames);
+        assertEquals(0, expectedNsNames.size());
+
+        Set<ObjectInstance> insts = ccmbs.queryMBeans(
+                MBeanServerDelegate.DELEGATE_NAME, null);
+        assertEquals(1, insts.size());
+        assertEquals(MBeanServerDelegate.DELEGATE_NAME,
+                insts.iterator().next().getObjectName());
+
+        ObjectName createdName = new ObjectName("a:type=Created");
+        ObjectInstance createdOI =
+                ccmbs.createMBean(ShowContext.class.getName(), createdName);
+        assertEquals(ShowContext.class.getName(), createdOI.getClassName());
+        assertEquals(createdName, createdOI.getObjectName());
+        assertEquals(disney, ccmbs.getAttribute(createdName, "CreationContext"));
+
+        NotificationListener nothingListener = new NotificationListener() {
+            public void handleNotification(Notification n, Object h) {}
+        };
+        ccmbs.addNotificationListener(createdName, nothingListener, null, null);
+        ccmbs.removeNotificationListener(createdName, nothingListener, null, null);
+        ccmbs.addNotificationListener(createdName, nothingListener, null, null);
+        ccmbs.removeNotificationListener(createdName, nothingListener);
+        Set<String> expectedOps = new HashSet<String>(Arrays.asList(
+                "preRegister", "postRegister", "addNotificationListener",
+                "removeNL1", "removeNL3", "getNotificationInfo"));
+        assertEquals(expectedOps, ccmbs.getAttribute(createdName, "CalledOps"));
+
+        assertEquals(ShowContext.class.getClassLoader(),
+                ccmbs.getClassLoaderFor(createdName));
+
+        assertEquals(true, ccmbs.isRegistered(createdName));
+        assertEquals(true, ccmbs.isInstanceOf(createdName,
+                ShowContext.class.getName()));
+        assertEquals(false, ccmbs.isInstanceOf(createdName,
+                DynamicMBean.class.getName()));
+        ccmbs.unregisterMBean(createdName);
+        assertEquals(false, ccmbs.isRegistered(createdName));
+
+        MLet mlet = new MLet();
+        ObjectName defaultMLetName = new ObjectName("DefaultDomain:type=MLet");
+
+        ccmbs.registerMBean(mlet, defaultMLetName);
+
+        assertEquals(mlet, ccmbs.getClassLoader(defaultMLetName));
+
+        assertEquals(0, mbeanLogIH.log.size());
+
+        // Test that contexts still work when we can't combine two encoded contexts.
+        // Here, we wrap cmbs (mickey=mouse) so that ccmbs2 (donald=duck) cannot
+        // see that it already contains a context and therefore cannot combine
+        // into mickey=mouse;donald=duck.  We don't actually use the snoop
+        // capabilities of the returned object -- we just want an opaque
+        // MBeanServer wrapper
+        MBeanServer cmbs2 = newSnoop(MBeanServer.class, new LogIH(cmbs));
+        MBeanServer ccmbs2 = ClientContext.withContext(cmbs2, "donald", "duck");
+        assertEquals(disney, ccmbs2.getAttribute(name, "Context"));
+
+        // ADD NEW TESTS HERE ^^^
+
+        if (failure != null)
+            throw new Exception(failure);
+        } finally {
+            srv.stop();
+        }
+    }
+
+    private static void assertEquals(Object x, Object y) {
+        if (!equal(x, y))
+            failed("expected " + string(x) + "; got " + string(y));
+    }
+
+    private static boolean equal(Object x, Object y) {
+        if (x == y)
+            return true;
+        if (x == null || y == null)
+            return false;
+        if (x.getClass().isArray())
+            return Arrays.deepEquals(new Object[] {x}, new Object[] {y});
+        return x.equals(y);
+    }
+
+    private static String string(Object x) {
+        String s = Arrays.deepToString(new Object[] {x});
+        return s.substring(1, s.length() - 1);
+    }
+
+    private static void assertCalled(
+            LogIH logIH, String op, Map<String, String> expectedContext) {
+        assertCalled(logIH, op, null, expectedContext);
+    }
+
+    private static void assertCalled(
+            LogIH logIH, String op, Object[] params,
+            Map<String, String> expectedContext) {
+        LogRecord lr = logIH.log.remove();
+        assertEquals(op, lr.op);
+        if (params != null)
+            assertEquals(params, lr.params);
+        assertEquals(expectedContext, lr.context);
+    }
+
+    private static void failed(String why) {
+        failure = why;
+        new Throwable("FAILED: " + why).printStackTrace(System.out);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/localizable/MBeanDescriptions.properties	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,9 @@
+# This is the default description ResourceBundle for MBeans in this package.
+# Resources here override the descriptions specified with @Description
+# but only when localization is happening and when there is not a more
+# specific resource for the description (for example from MBeanDescriptions_fr).
+
+WhatsitMBean.mbean = A whatsit
+# This must be the same as WhatsitMBean.englishMBeanDescription for the
+# purposes of this test.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/localizable/MBeanDescriptions_fr.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package localizable;
+
+import java.util.ListResourceBundle;
+import static localizable.WhatsitMBean.*;
+
+public class MBeanDescriptions_fr extends ListResourceBundle {
+    @Override
+    protected Object[][] getContents() {
+        String constrProp = "WhatsitMBean.constructor." + Whatsit.class.getName();
+        return new Object[][] {
+            {"WhatsitMBean.mbean", frenchMBeanDescription},
+            {"WhatsitMBean.attribute.Whatsit", frenchAttrDescription},
+            {"WhatsitMBean.operation.frob", frenchOperDescription},
+            {"WhatsitMBean.operation.frob.p1", frenchParamDescription},
+            {constrProp, frenchConstrDescription},
+            {constrProp + ".p1", frenchConstrParamDescription},
+        };
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/localizable/Whatsit.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package localizable;
+
+import javax.management.Description;
+
+public class Whatsit implements WhatsitMBean {
+    /**
+     * Attribute : NewAttribute0
+     */
+    private String newAttribute0;
+    @Description(englishConstrDescription)
+    public Whatsit() {}
+
+    @Description(englishConstrDescription)
+    public Whatsit(@Description(englishConstrParamDescription) int type) {}
+
+    public String getWhatsit() {
+        return "whatsit";
+    }
+
+    public void frob(String whatsit) {
+    }
+
+    /**
+     * Get Tiddly
+     */
+    public String getNewAttribute0() {
+        return newAttribute0;
+    }
+
+    /**
+     * Set Tiddly
+     */
+    public void setNewAttribute0(String value) {
+        newAttribute0 = value;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/context/localizable/WhatsitMBean.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package localizable;
+
+import javax.management.Description;
+
+@Description(WhatsitMBean.defaultMBeanDescription)
+public interface WhatsitMBean {
+    public static final String
+            defaultMBeanDescription = "Default whatsit MBean description",
+            englishMBeanDescription = "A whatsit",
+            // Previous description appears in MBeanDescriptions.properties
+            // so it overrides the @Description when that file is used.
+            frenchMBeanDescription = "Un bidule",
+            englishAttrDescription = "The whatsit",
+            frenchAttrDescription = "Le bidule",
+            englishOperDescription = "Frob the whatsit",
+            frenchOperDescription = "Frober le bidule",
+            englishParamDescription = "The whatsit to frob",
+            frenchParamDescription = "Le bidule \u00e0 frober",
+            englishConstrDescription = "Make a whatsit",
+            frenchConstrDescription = "Fabriquer un bidule",
+            englishConstrParamDescription = "Type of whatsit to make",
+            frenchConstrParamDescription = "Type de bidule \u00e0 fabriquer",
+            unlocalizedMBeanDescription = "Unlocalized MBean";
+
+    @Description(englishAttrDescription)
+    public String getWhatsit();
+
+    @Description(englishOperDescription)
+    public void frob(@Description(englishParamDescription) String whatsit);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/descriptor/DescriptorConstructorTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2004-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6501362
+ * @summary DescriptorSupport(String) could recognize "name=value" as well as XML format
+ * @author Jean-Francois Denise
+ * @run clean DescriptorConstructorTest
+ * @run build DescriptorConstructorTest
+ * @run main DescriptorConstructorTest
+ */
+
+import javax.management.modelmbean.DescriptorSupport;
+
+public class DescriptorConstructorTest {
+    public static void main(String[] args) throws Exception {
+        DescriptorSupport d1 = new DescriptorSupport("MyName1=MyValue1");
+        if(!d1.getFieldValue("MyName1").equals("MyValue1"))
+            throw new Exception("Invalid parsing");
+        DescriptorSupport d2 = new DescriptorSupport("<Descriptor>" +
+                "<field name=\"MyName2\" value=\"MyValue2\"></field></Descriptor>");
+        if(!d2.getFieldValue("MyName2").equals("MyValue2"))
+            throw new Exception("Invalid parsing");
+    }
+}
--- a/test/javax/management/eventService/CustomForwarderTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/eventService/CustomForwarderTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -23,7 +23,7 @@
 
 /*
  * @test CustomForwarderTest
- * @bug 5108776
+ * @bug 5108776 6759619
  * @summary Test that a custom EventForwarder can be added
  * @author Eamonn McManus
  */
@@ -45,6 +45,7 @@
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
+import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanServer;
 import javax.management.MBeanServerInvocationHandler;
 import javax.management.Notification;
@@ -107,6 +108,14 @@
             socket.close();
         }
 
+        void simulateNonFatal() {
+            receiver.nonFatal(new Exception("NonFatal"));
+        }
+
+        void simulateFailed() {
+            receiver.failed(new Error("Failed"));
+        }
+
         private class Receiver implements Runnable {
             public void run() {
                 byte[] buf = new byte[1024];
@@ -191,8 +200,7 @@
 
     public static void main(String[] args) throws Exception {
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-        MBeanServerForwarder mbsf = EventClientDelegate.newForwarder();
-        mbsf.setMBeanServer(mbs);
+        MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(mbs, null);
         mbs = mbsf;
 
         // for 1.5
@@ -216,16 +224,26 @@
                 EventClientDelegateMBean.OBJECT_NAME,
                 EventClientDelegateMBean.class,
                 false);
-        EventRelay relay = new UdpEventRelay(delegate);
+        UdpEventRelay relay = new UdpEventRelay(delegate);
         EventClient client = new EventClient(delegate, relay, null, null, 0L);
 
         final Semaphore lostCountSema = new Semaphore(0);
+        final BlockingQueue<Notification> nonFatalNotifs =
+                new ArrayBlockingQueue<Notification>(1);
+        final BlockingQueue<Notification> failedNotifs =
+                new ArrayBlockingQueue<Notification>(1);
         NotificationListener lostListener = new NotificationListener() {
             public void handleNotification(Notification notification, Object handback) {
                 if (notification.getType().equals(EventClient.NOTIFS_LOST)) {
                     System.out.println("Got lost-notifs notif: count=" +
                             notification.getUserData());
                     lostCountSema.release(((Long) notification.getUserData()).intValue());
+                } else if (notification.getType().equals(EventClient.NONFATAL)) {
+                    System.out.println("Got nonFatal notif");
+                    nonFatalNotifs.add(notification);
+                } else if (notification.getType().equals(EventClient.FAILED)) {
+                    System.out.println("Got failed notif");
+                    failedNotifs.add(notification);
                 } else
                     System.out.println("Mysterious EventClient notif: " + notification);
             }
@@ -300,6 +318,35 @@
         Thread.sleep(10);
         assertEquals("Further lost-notifs", 0, lostCountSema.availablePermits());
 
+        System.out.println("Testing error notifs");
+        relay.simulateNonFatal();
+        n = nonFatalNotifs.poll(10, TimeUnit.SECONDS);
+        assertEquals("Exception message for non-fatal exception", "NonFatal",
+                ((Throwable) n.getSource()).getMessage());
+        relay.simulateFailed();
+        n = failedNotifs.poll(10, TimeUnit.SECONDS);
+        assertEquals("Exception message for failed exception", "Failed",
+                ((Throwable) n.getSource()).getMessage());
+
+        // 6759619
+        System.out.println("Test EventClient.getEventClientNotificationInfo");
+        MBeanNotificationInfo[] mbnis = client.getEventClientNotificationInfo();
+        final String[] expectedTypes = {
+            EventClient.NOTIFS_LOST, EventClient.NONFATAL, EventClient.FAILED
+        };
+    check:
+        for (String type : expectedTypes) {
+            for (MBeanNotificationInfo mbni : mbnis) {
+                for (String t : mbni.getNotifTypes()) {
+                    if (type.equals(t)) {
+                        System.out.println("...found " + type);
+                        continue check;
+                    }
+                }
+            }
+            throw new Exception("TEST FAILED: Did not find notif type " + type);
+        }
+
         client.close();
 
         System.out.println("TEST PASSED");
--- a/test/javax/management/eventService/EventClientExecutorTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/eventService/EventClientExecutorTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -65,8 +65,7 @@
                 new NamedThreadFactory("LEASE"));
 
         MBeanServer mbs = MBeanServerFactory.newMBeanServer();
-        MBeanServerForwarder mbsf = EventClientDelegate.newForwarder();
-        mbsf.setMBeanServer(mbs);
+        MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(mbs, null);
         mbs = mbsf;
 
         EventClientDelegateMBean ecd = EventClientDelegate.getProxy(mbs);
--- a/test/javax/management/eventService/EventManagerTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/eventService/EventManagerTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -98,7 +98,7 @@
         succeed &= test(new EventClient(ecd,
                 new RMIPushEventRelay(ecd),
                 null, null,
-                EventClient.DEFAULT_LEASE_TIMEOUT));
+                EventClient.DEFAULT_REQUESTED_LEASE_TIME));
 
         conn.close();
         server.stop();
--- a/test/javax/management/eventService/ListenerTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/eventService/ListenerTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -99,7 +99,7 @@
         succeed &= test(new EventClient(ecd,
                 new RMIPushEventRelay(ecd),
                 null, null,
-                EventClient.DEFAULT_LEASE_TIMEOUT));
+                EventClient.DEFAULT_REQUESTED_LEASE_TIME));
 
         conn.close();
         server.stop();
--- a/test/javax/management/eventService/NotSerializableNotifTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/eventService/NotSerializableNotifTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -95,7 +95,7 @@
                 FetchingEventRelay.DEFAULT_MAX_NOTIFICATIONS,
                 null);
         EventClient ec = new EventClient(ecd, eventRelay, null, null,
-                EventClient.DEFAULT_LEASE_TIMEOUT);
+                EventClient.DEFAULT_REQUESTED_LEASE_TIME);
 
         // add listener from the client side
         Listener listener = new Listener();
--- a/test/javax/management/eventService/UsingEventService.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/eventService/UsingEventService.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,3 +1,26 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
 /*
  * @test UsingEventService.java 1.10 08/01/22
  * @bug 5108776
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/interop/MBeanExceptionInteropTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6456269
+ * @summary Test that an MBeanException serialized on JDK 6 deserializes
+ * correctly on JDK 7.
+ * @author Eamonn McManus
+ */
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import javax.management.MBeanException;
+
+// In JDK 6, the Throwable.cause field was always null for an MBeanException,
+// but it didn't matter because we overrode getCause() to return
+// MBeanException.exception instead.  In JDK 7, we no longer override getCause()
+// because MBeanException doubles as the serial form of GenericMBeanException.
+// So we need some care to make sure that objects deserialized from JDK 6
+// have the right getCause() behaviour.
+public class MBeanExceptionInteropTest {
+    private static final byte[] SERIALIZED_MBEAN_EXCEPTION = {
+        -84,-19,0,5,115,114,0,31,106,97,118,97,120,46,109,97,
+        110,97,103,101,109,101,110,116,46,77,66,101,97,110,69,120,
+        99,101,112,116,105,111,110,56,110,-116,-27,110,87,49,-50,2,
+        0,1,76,0,9,101,120,99,101,112,116,105,111,110,116,0,
+        21,76,106,97,118,97,47,108,97,110,103,47,69,120,99,101,
+        112,116,105,111,110,59,120,114,0,28,106,97,118,97,120,46,
+        109,97,110,97,103,101,109,101,110,116,46,74,77,69,120,99,
+        101,112,116,105,111,110,4,-35,76,-20,-109,-99,126,113,2,0,
+        0,120,114,0,19,106,97,118,97,46,108,97,110,103,46,69,
+        120,99,101,112,116,105,111,110,-48,-3,31,62,26,59,28,-60,
+        2,0,0,120,114,0,19,106,97,118,97,46,108,97,110,103,
+        46,84,104,114,111,119,97,98,108,101,-43,-58,53,39,57,119,
+        -72,-53,3,0,3,76,0,5,99,97,117,115,101,116,0,21,
+        76,106,97,118,97,47,108,97,110,103,47,84,104,114,111,119,
+        97,98,108,101,59,76,0,13,100,101,116,97,105,108,77,101,
+        115,115,97,103,101,116,0,18,76,106,97,118,97,47,108,97,
+        110,103,47,83,116,114,105,110,103,59,91,0,10,115,116,97,
+        99,107,84,114,97,99,101,116,0,30,91,76,106,97,118,97,
+        47,108,97,110,103,47,83,116,97,99,107,84,114,97,99,101,
+        69,108,101,109,101,110,116,59,120,112,113,0,126,0,8,116,
+        0,7,79,104,32,100,101,97,114,117,114,0,30,91,76,106,
+        97,118,97,46,108,97,110,103,46,83,116,97,99,107,84,114,
+        97,99,101,69,108,101,109,101,110,116,59,2,70,42,60,60,
+        -3,34,57,2,0,0,120,112,0,0,0,2,115,114,0,27,
+        106,97,118,97,46,108,97,110,103,46,83,116,97,99,107,84,
+        114,97,99,101,69,108,101,109,101,110,116,97,9,-59,-102,38,
+        54,-35,-123,2,0,4,73,0,10,108,105,110,101,78,117,109,
+        98,101,114,76,0,14,100,101,99,108,97,114,105,110,103,67,
+        108,97,115,115,113,0,126,0,6,76,0,8,102,105,108,101,
+        78,97,109,101,113,0,126,0,6,76,0,10,109,101,116,104,
+        111,100,78,97,109,101,113,0,126,0,6,120,112,0,0,0,
+        63,116,0,25,77,66,101,97,110,69,120,99,101,112,116,105,
+        111,110,73,110,116,101,114,111,112,84,101,115,116,116,0,30,
+        77,66,101,97,110,69,120,99,101,112,116,105,111,110,73,110,
+        116,101,114,111,112,84,101,115,116,46,106,97,118,97,116,0,
+        5,119,114,105,116,101,115,113,0,126,0,12,0,0,0,46,
+        113,0,126,0,14,113,0,126,0,15,116,0,4,109,97,105,
+        110,120,115,114,0,34,106,97,118,97,46,108,97,110,103,46,
+        73,108,108,101,103,97,108,65,114,103,117,109,101,110,116,69,
+        120,99,101,112,116,105,111,110,-75,-119,115,-45,125,102,-113,-68,
+        2,0,0,120,114,0,26,106,97,118,97,46,108,97,110,103,
+        46,82,117,110,116,105,109,101,69,120,99,101,112,116,105,111,
+        110,-98,95,6,71,10,52,-125,-27,2,0,0,120,113,0,126,
+        0,3,113,0,126,0,21,116,0,3,66,97,100,117,113,0,
+        126,0,10,0,0,0,2,115,113,0,126,0,12,0,0,0,
+        62,113,0,126,0,14,113,0,126,0,15,113,0,126,0,16,
+        115,113,0,126,0,12,0,0,0,46,113,0,126,0,14,113,
+        0,126,0,15,113,0,126,0,18,120,
+    };
+
+    private static volatile String failure;
+
+    public static void main(String[] args) throws Exception {
+        if (args.length > 0) {
+            if (args[0].equals("write") && args.length == 1) {
+                write();
+                return;
+            } else {
+                System.err.println(
+                        "Usage: java MBeanExceptionInteropTest");
+                System.err.println(
+                        "or:    java MBeanExceptionInteropTest write");
+                System.exit(1);
+            }
+        }
+
+        // Read the serialized object and check it is correct.
+        ByteArrayInputStream bin =
+                new ByteArrayInputStream(SERIALIZED_MBEAN_EXCEPTION);
+        ObjectInputStream oin = new ObjectInputStream(bin);
+        MBeanException mbeanEx = (MBeanException) oin.readObject();
+        assertEquals("MBeanException message", "Oh dear", mbeanEx.getMessage());
+        System.out.println("getCause(): " + mbeanEx.getCause() + "; " +
+                "getTargetException(): " + mbeanEx.getTargetException());
+        for (Throwable t :
+                new Throwable[] {mbeanEx.getCause(), mbeanEx.getTargetException()}) {
+            if (!(t instanceof IllegalArgumentException))
+                fail("Nested exception not an IllegalArgumentException: " + t);
+            else
+                assertEquals("Nested exception message", "Bad", t.getMessage());
+        }
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    // Write a file that can be inserted into this source file as the
+    // contents of the SERIALIZED_MBEAN_EXCEPTION array.  Run this program
+    // on JDK 6 to generate the array, then test on JDK 7.
+    private static void write() throws Exception {
+        Exception wrapped = new IllegalArgumentException("Bad");
+        MBeanException mbeanEx = new MBeanException(wrapped, "Oh dear");
+        ByteArrayOutputStream bout = new ByteArrayOutputStream();
+        ObjectOutputStream oout = new ObjectOutputStream(bout);
+        oout.writeObject(mbeanEx);
+        oout.close();
+        byte[] bytes = bout.toByteArray();
+        for (int i = 0; i < bytes.length; i++) {
+            System.out.printf("%d,", bytes[i]);
+            if (i % 16 == 15)
+                System.out.println();
+        }
+        if (bytes.length % 16 != 0)
+            System.out.println();
+    }
+
+    private static void assertEquals(String what, Object expect, Object actual) {
+        boolean equal = (expect == null) ? (actual == null) : expect.equals(actual);
+        if (equal)
+            System.out.println("OK: " + what + ": " + expect);
+        else
+            fail(what + ": expected " + expect + ", got " + actual);
+    }
+
+    private static void fail(String why) {
+        System.out.println("FAIL: " + why);
+        failure = why;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/monitor/DerivedGaugeMonitorTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,270 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6683213
+ * @summary Test that the initial derived gauge is (Integer)0
+ * @author Daniel Fuchs
+ * @run clean DerivedGaugeMonitorTest
+ * @run build DerivedGaugeMonitorTest
+ * @run main DerivedGaugeMonitorTest
+ */
+
+import java.io.Serializable;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+import javax.management.monitor.CounterMonitor;
+import javax.management.monitor.GaugeMonitor;
+
+public class DerivedGaugeMonitorTest {
+
+    public static interface Things {
+        public long getALong();
+        public int getAnInt();
+        public double getADouble();
+        public short getAShort();
+        public byte getAByte();
+        public float getAFloat();
+    }
+    public static interface MyMBean extends Things {
+        public Things getAThing();
+    }
+
+    public static class MyThings implements Things, Serializable {
+        private static final long serialVersionUID = -4333982919572564126L;
+
+        private volatile long along = 0;
+        private volatile int anint = 0;
+        private volatile short ashort = 0;
+        private volatile byte abyte = 0;
+        private volatile float afloat = 0;
+        private volatile double adouble = 0;
+
+        private volatile transient boolean mutable;
+
+        public MyThings() {
+            this(false);
+        }
+
+        protected MyThings(boolean mutable) {
+            this.mutable=mutable;
+        }
+
+        public long getALong() {
+            return mutable?along++:along;
+        }
+
+        public int getAnInt() {
+            return mutable?anint++:anint;
+        }
+
+        public double getADouble() {
+            return mutable?adouble++:adouble;
+        }
+
+        public short getAShort() {
+            return mutable?ashort++:ashort;
+        }
+
+        public byte getAByte() {
+            return mutable?abyte++:abyte;
+        }
+
+        public float getAFloat() {
+            return mutable?afloat++:afloat;
+        }
+
+        @Override
+        public Object clone() throws CloneNotSupportedException {
+            final MyThings other = (MyThings)super.clone();
+            other.mutable=false;
+            return other;
+        }
+    }
+
+    public static class My implements MyMBean {
+
+        public final CountDownLatch cdl = new CountDownLatch(6);
+
+        private final MyThings things = new MyThings(true);
+        private volatile int count = 0;
+
+        public Things getAThing() {
+            count++;
+            cdl.countDown();
+            try {
+                return (Things) things.clone();
+            } catch (CloneNotSupportedException ex) {
+                return null;
+            }
+        }
+
+        public long getALong() {
+            count++;
+            cdl.countDown();
+            return things.getALong();
+        }
+
+        public int getAnInt() {
+            count++;
+            cdl.countDown();
+            return things.getAnInt();
+        }
+
+        public double getADouble() {
+            count++;
+            cdl.countDown();
+            return things.getADouble();
+        }
+
+        public short getAShort() {
+            count++;
+            cdl.countDown();
+            return things.getAShort();
+        }
+
+        public byte getAByte() {
+            count++;
+            cdl.countDown();
+            return things.getAByte();
+        }
+
+        public float getAFloat() {
+            count++;
+            cdl.countDown();
+            return things.getAFloat();
+        }
+
+    }
+
+
+    public static String[] attributes = {
+        "AByte","AShort","AnInt","ALong","AFloat","ADouble"
+    };
+    public static String[] things = {
+        "AThing.AByte","AThing.AShort","AThing.AnInt","AThing.ALong",
+        "AThing.AFloat","AThing.ADouble"
+    };
+
+    public static void check(String attr, MBeanServer server, ObjectName mon,
+            ObjectName mbean) throws Exception {
+        final Object obj = server.getAttribute(mon, "DerivedGauge");
+        check(attr,server,mon,mbean,obj);
+    }
+
+    public static void check(String attr, MBeanServer server, ObjectName mon,
+            ObjectName mbean, Object obj) throws Exception  {
+        if (obj == null)
+            throw new Exception("Derived gauge for: " + attr +
+                    " ["+mon+", "+mbean+"] is null!");
+        if (!Integer.valueOf(0).equals(obj))
+            throw new Exception("Derived gauge for: " + attr +
+                    " ["+mon+", "+mbean+"] is "+obj);
+    }
+
+    public static void check(String attr, MBeanServer server, ObjectName mon,
+            ObjectName mbean, long start) throws Exception {
+        final Object obj = server.getAttribute(mon, "DerivedGauge");
+        final long now = System.currentTimeMillis();
+        final long gran = (Long)server.getAttribute(mon, "GranularityPeriod");
+        if (now > start +2*gran) {
+            throw new Exception(attr+": Can't verify test case: " +
+                    "granularity period expired!");
+        }
+        check(attr,server,mon,mbean,obj);
+    }
+
+    public static void test(String attr) throws Exception {
+        System.err.println("Testing "+ attr);
+        final MBeanServer server = MBeanServerFactory.createMBeanServer();
+        final ObjectName mbean = new ObjectName("ugly:type=cr.p");
+        final My my = new My();
+        final GaugeMonitor mon2 = new GaugeMonitor();
+        final ObjectName mon2n = new ObjectName("mon1:type=GaugeMonitor");
+        final CounterMonitor mon1 = new CounterMonitor();
+        final ObjectName mon1n = new ObjectName("mon2:type=CounterMonitor");
+
+        server.registerMBean(my, mbean);
+        server.registerMBean(mon1, mon1n);
+        server.registerMBean(mon2, mon2n);
+
+        mon1.addObservedObject(mbean);
+        mon1.setGranularityPeriod(60000); // 60 sec...
+        mon1.setObservedAttribute(attr);
+        mon1.setDifferenceMode(true);
+        check(attr,server,mon1n,mbean);
+
+        mon2.addObservedObject(mbean);
+        mon2.setGranularityPeriod(60000); // 60 sec...
+        mon2.setObservedAttribute(attr);
+        mon2.setDifferenceMode(true);
+        check(attr,server,mon2n,mbean);
+
+        final long approxStart = System.currentTimeMillis();
+        mon1.start();
+        mon2.start();
+
+        try {
+            check(attr,server,mon1n,mbean,approxStart);
+            check(attr,server,mon2n,mbean,approxStart);
+            check(attr,server,mon1n,mbean,approxStart);
+            check(attr,server,mon2n,mbean,approxStart);
+
+
+            mon1.setGranularityPeriod(5);
+            mon2.setGranularityPeriod(5);
+
+            my.cdl.await(1000, TimeUnit.MILLISECONDS);
+            if (my.cdl.getCount() > 0)
+                throw new Exception(attr+": Count down not reached!");
+
+            // just check that we don't get an exception now...
+            System.err.println(attr+": [" + mon1n+
+                    "] DerivedGauge is now "+
+                    server.getAttribute(mon1n, "DerivedGauge"));
+            System.err.println(attr+": [" + mon2n+
+                    "] DerivedGauge is now "+
+                    server.getAttribute(mon2n, "DerivedGauge"));
+        } finally {
+           try {mon1.stop();} catch (Exception x) {}
+           try {mon2.stop();} catch (Exception x) {}
+        }
+    }
+
+
+
+
+    public static void main(String[] args) throws Exception {
+        for (String attr:attributes) {
+            test(attr);
+        }
+        for (String attr:things) {
+            test(attr);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/monitor/InstantiateMonitorNotificationTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,52 @@
+
+import javax.management.ObjectName;
+import javax.management.monitor.MonitorNotification;
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6373143
+ * @summary Test MonitorNotification public constructor
+ * @author JFDenise
+ * @run clean InstantiateMonitorNotificationTest
+ * @run build InstantiateMonitorNotificationTest
+ * @run main InstantiateMonitorNotificationTest
+ */
+
+public class InstantiateMonitorNotificationTest {
+
+    public static void main(String[] args) throws Exception {
+        MonitorNotification notif = new MonitorNotification("com.foo.test",
+                ObjectName.valueOf(":type=Monitor"),
+                999,
+                999,
+                "A  message",
+                ObjectName.valueOf(":type=Observed"),
+                "MyAttribute",
+                Integer.valueOf(14),
+                Integer.valueOf(15));
+        System.out.println("Test passed");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/mxbean/ExceptionDiagnosisTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,237 @@
+/*
+ * @test
+ * @bug 6713777
+ * @summary Test that exception messages include all relevant information
+ * @author Eamonn McManus
+ */
+
+import java.beans.ConstructorProperties;
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import javax.management.JMX;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.NotCompliantMBeanException;
+import javax.management.ObjectName;
+
+public class ExceptionDiagnosisTest {
+    private static volatile String failure;
+
+    // ------ Illegal MXBeans ------
+
+    // Test that all of BdelloidMXBean, Rotifer, and File appear in the
+    // exception messages.  File is not an allowed type because of recursive
+    // getters like "File getParentFile()".
+    public static interface BdelloidMXBean {
+        public Rotifer getRotifer();
+    }
+
+    public static class Bdelloid implements BdelloidMXBean {
+        public Rotifer getRotifer() {
+            return null;
+        }
+    }
+
+    public static class Rotifer {
+        public File getFile() {
+            return null;
+        }
+    }
+
+    // Test that all of IndirectHashMapMXBean, HashMapContainer, and
+    // HashMap<String,String> appear in the exception messages.
+    // HashMap<String,String> is not an allowed type because only the
+    // java.util interface such as Map are allowed with generic parameters,
+    // not their concrete implementations like HashMap.
+    public static interface IndirectHashMapMXBean {
+        public HashMapContainer getContainer();
+    }
+
+    public static class IndirectHashMap implements IndirectHashMapMXBean {
+        public HashMapContainer getContainer() {
+            return null;
+        }
+    }
+
+    public static class HashMapContainer {
+        public HashMap<String, String> getHashMap() {return null;}
+    }
+
+    // ------ MXBeans that are legal but where proxies are not ------
+
+    // Test that all of BlimMXBean, BlimContainer, Blim, and Blam appear
+    // in the exception messages for a proxy for this MXBean.  Blam is
+    // legal in MXBeans but is not reconstructible so you cannot make
+    // a proxy for BlimMXBean.
+    public static interface BlimMXBean {
+        public BlimContainer getBlimContainer();
+    }
+
+    public static class BlimImpl implements BlimMXBean {
+        public BlimContainer getBlimContainer() {
+            return null;
+        }
+    }
+
+    public static class BlimContainer {
+        public Blim getBlim() {return null;}
+        public void setBlim(Blim blim) {}
+    }
+
+    public static class Blim {
+        public Blam getBlam() {return null;}
+        public void setBlam(Blam blam) {}
+    }
+
+    public static class Blam {
+        public Blam(int x) {}
+
+        public int getX() {return 0;}
+    }
+
+
+    // ------ Property name differing only in case ------
+
+    public static interface CaseProbMXBean {
+        public CaseProb getCaseProb();
+    }
+
+    public static class CaseProbImpl implements CaseProbMXBean {
+        public CaseProb getCaseProb() {return null;}
+    }
+
+    public static class CaseProb {
+        @ConstructorProperties({"urlPath"})
+        public CaseProb(String urlPath) {}
+
+        public String getURLPath() {return null;}
+    }
+
+
+    public static void main(String[] args) throws Exception {
+        testMXBeans(new Bdelloid(), BdelloidMXBean.class, Rotifer.class, File.class);
+        testMXBeans(new IndirectHashMap(),
+                IndirectHashMapMXBean.class, HashMapContainer.class,
+                HashMapContainer.class.getMethod("getHashMap").getGenericReturnType());
+
+        testProxies(new BlimImpl(), BlimMXBean.class, BlimMXBean.class,
+                BlimContainer.class, Blim.class, Blam.class);
+
+        testCaseProb();
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    private static void testMXBeans(Object mbean, Type... expectedTypes)
+            throws Exception {
+        try {
+            MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+            ObjectName name = new ObjectName("a:b=c");
+            mbs.registerMBean(mbean, name);
+            fail("No exception from registerMBean for " + mbean);
+        } catch (NotCompliantMBeanException e) {
+            checkExceptionChain("MBean " + mbean, e, expectedTypes);
+        }
+    }
+
+    private static <T> void testProxies(
+            Object mbean, Class<T> mxbeanClass, Type... expectedTypes)
+            throws Exception {
+        MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+        ObjectName name = new ObjectName("a:b=c");
+        mbs.registerMBean(mbean, name);
+        T proxy = JMX.newMXBeanProxy(mbs, name, mxbeanClass);
+        List<Method> methods = new ArrayList<Method>();
+        for (Method m : mxbeanClass.getMethods()) {
+            if (m.getDeclaringClass() == mxbeanClass)
+                methods.add(m);
+        }
+        if (methods.size() != 1) {
+            fail("TEST BUG: expected to find exactly one method in " +
+                    mxbeanClass.getName() + ": " + methods);
+        }
+        Method getter = methods.get(0);
+        try {
+            try {
+                getter.invoke(proxy);
+                fail("No exception from proxy method " + getter.getName() +
+                        " in " + mxbeanClass.getName());
+            } catch (InvocationTargetException e) {
+                Throwable cause = e.getCause();
+                if (cause instanceof Exception)
+                    throw (Exception) cause;
+                else
+                    throw (Error) cause;
+            }
+        } catch (IllegalArgumentException e) {
+            checkExceptionChain(
+                    "Proxy for " + mxbeanClass.getName(), e, expectedTypes);
+        }
+    }
+
+    private static void testCaseProb() throws Exception {
+        MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+        ObjectName name = new ObjectName("a:b=c");
+        Object mbean = new CaseProbImpl();
+        mbs.registerMBean(new CaseProbImpl(), name);
+        CaseProbMXBean proxy = JMX.newMXBeanProxy(mbs, name, CaseProbMXBean.class);
+        try {
+            CaseProb prob = proxy.getCaseProb();
+            fail("No exception from proxy method getCaseProb");
+        } catch (IllegalArgumentException e) {
+            String messageChain = messageChain(e);
+            if (messageChain.contains("URLPath")) {
+                System.out.println("Message chain contains URLPath as required: "
+                        + messageChain);
+            } else {
+                fail("Exception chain for CaseProb does not mention property" +
+                        " URLPath differing only in case");
+                System.out.println("Full stack trace:");
+                e.printStackTrace(System.out);
+            }
+        }
+    }
+
+    private static void checkExceptionChain(
+            String what, Throwable e, Type[] expectedTypes) {
+        System.out.println("Exceptions in chain for " + what + ":");
+        for (Throwable t = e; t != null; t = t.getCause())
+            System.out.println(".." + t);
+
+        String messageChain = messageChain(e);
+
+        // Now check that each of the classes is mentioned in those messages
+        for (Type type : expectedTypes) {
+            String name = (type instanceof Class) ?
+                ((Class<?>) type).getName() : type.toString();
+            if (!messageChain.contains(name)) {
+                fail("Exception chain for " + what + " does not mention " +
+                        name);
+                System.out.println("Full stack trace:");
+                e.printStackTrace(System.out);
+            }
+        }
+
+        System.out.println();
+    }
+
+    private static String messageChain(Throwable t) {
+        String msg = "//";
+        for ( ; t != null; t = t.getCause())
+            msg += " " + t.getMessage() + " //";
+        return msg;
+    }
+
+    private static void fail(String why) {
+        failure = why;
+        System.out.println("FAIL: " + why);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/mxbean/TypeNameTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6757225 6763051
+ * @summary Test that type names in MXBeans match their spec.
+ * @author Eamonn McManus
+ */
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.List;
+import java.util.Map;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularType;
+
+public class TypeNameTest {
+    public static interface TestMXBean {
+        public int getInt();
+        public String IntName = "int";
+
+        public Map<String, Integer> getMapSI();
+        public String MapSIName = "java.util.Map<java.lang.String, java.lang.Integer>";
+
+        public Map<String, int[]> getMapSInts();
+        public String MapSIntsName = "java.util.Map<java.lang.String, int[]>";
+
+        public List<List<int[]>> getListListInts();
+        public String ListListIntsName = "java.util.List<java.util.List<int[]>>";
+    }
+
+    private static InvocationHandler nullIH = new InvocationHandler() {
+        public Object invoke(Object proxy, Method method, Object[] args)
+                throws Throwable {
+            return null;
+        }
+    };
+
+    static volatile String failure;
+
+    public static void main(String[] args) throws Exception {
+        TestMXBean testImpl = (TestMXBean) Proxy.newProxyInstance(
+                TestMXBean.class.getClassLoader(), new Class<?>[] {TestMXBean.class}, nullIH);
+        Object mxbean = new StandardMBean(testImpl, TestMXBean.class, true);
+        MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+        ObjectName name = new ObjectName("a:b=c");
+        mbs.registerMBean(mxbean, name);
+        MBeanInfo mbi = mbs.getMBeanInfo(name);
+        MBeanAttributeInfo[] mbais = mbi.getAttributes();
+        boolean sawTabular = false;
+        for (MBeanAttributeInfo mbai : mbais) {
+            String attrName = mbai.getName();
+            String attrTypeName = (String) mbai.getDescriptor().getFieldValue("originalType");
+            String fieldName = attrName + "Name";
+            Field nameField = TestMXBean.class.getField(fieldName);
+            String expectedTypeName = (String) nameField.get(null);
+
+            if (expectedTypeName.equals(attrTypeName)) {
+                System.out.println("OK: " + attrName + ": " + attrTypeName);
+            } else {
+                fail("For attribute " + attrName + " expected type name \"" +
+                        expectedTypeName + "\", found type name \"" + attrTypeName +
+                        "\"");
+            }
+
+            if (mbai.getType().equals(TabularData.class.getName())) {
+                sawTabular = true;
+                TabularType tt = (TabularType) mbai.getDescriptor().getFieldValue("openType");
+                if (tt.getTypeName().equals(attrTypeName)) {
+                    System.out.println("OK: TabularType name for " + attrName);
+                } else {
+                    fail("For attribute " + attrName + " expected TabularType " +
+                            "name \"" + attrTypeName + "\", found \"" +
+                            tt.getTypeName());
+                }
+            }
+        }
+
+        if (!sawTabular)
+            fail("Test bug: did not test TabularType name");
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    private static void fail(String why) {
+        System.out.println("FAIL: " + why);
+        failure = why;
+    }
+}
--- a/test/javax/management/namespace/EventWithNamespaceControlTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/EventWithNamespaceControlTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -85,6 +85,7 @@
         }
     }
 
+    @Override
     public Map<String, ?> getServerMap() {
         Map<String, ?> retValue = Collections.emptyMap();
         return retValue;
--- a/test/javax/management/namespace/JMXNamespaceSecurityTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/JMXNamespaceSecurityTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -51,6 +51,7 @@
 import javax.management.namespace.JMXNamespace;
 import javax.management.namespace.JMXNamespaces;
 import javax.management.remote.JMXConnectorServer;
+import javax.management.ClientContext;
 
 /**
  *
--- a/test/javax/management/namespace/JMXNamespaceViewTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/JMXNamespaceViewTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -42,6 +42,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.management.ClientContext;
 import javax.management.JMException;
 import javax.management.MBeanRegistration;
 import javax.management.MBeanServer;
@@ -62,11 +63,6 @@
  */
 public class JMXNamespaceViewTest {
 
-    // TODO: Remove this when contexts are added.
-    public static class ClientContext {
-        public final static String NAMESPACE = "jmx.context";
-    }
-
     /**
      * Describe the configuration of a namespace
      */
--- a/test/javax/management/namespace/JMXRemoteTargetNamespace.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/JMXRemoteTargetNamespace.java	Thu Jan 29 18:33:52 2009 -0800
@@ -68,13 +68,7 @@
 
     public JMXRemoteTargetNamespace(JMXServiceURL sourceURL,
             Map<String,?> optionsMap, String sourceNamespace) {
-        this(sourceURL,optionsMap,sourceNamespace,false);
-    }
-
-    public JMXRemoteTargetNamespace(JMXServiceURL sourceURL,
-            Map<String,?> optionsMap, String sourceNamespace,
-            boolean createEventClient) {
-        super(sourceURL,optionsMap);
+        super(sourceURL, optionsMap);
         this.sourceNamespace = sourceNamespace;
         this.createEventClient = createEventClient(optionsMap);
     }
@@ -92,14 +86,14 @@
     }
 
     @Override
-    protected JMXConnector newJMXConnector(JMXServiceURL url,
-            Map<String, ?> env) throws IOException {
-        JMXConnector sup = super.newJMXConnector(url, env);
-        if (sourceNamespace == null || "".equals(sourceNamespace))
-            return sup;
+    protected MBeanServerConnection getMBeanServerConnection(JMXConnector jmxc)
+            throws IOException {
+        MBeanServerConnection mbsc = super.getMBeanServerConnection(jmxc);
+        if (sourceNamespace != null && sourceNamespace.length() > 0)
+            mbsc = JMXNamespaces.narrowToNamespace(mbsc, sourceNamespace);
         if (createEventClient)
-            sup = EventClient.withEventClient(sup);
-        return JMXNamespaces.narrowToNamespace(sup, sourceNamespace);
+            mbsc = EventClient.getEventClientConnection(mbsc);
+        return mbsc;
     }
 
 
--- a/test/javax/management/namespace/LeadingSeparatorsTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/LeadingSeparatorsTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -24,7 +24,7 @@
  * @test LeadingSeparatorsTest.java
  * @summary Test that the semantics of a leading // in ObjectName is respected.
  * @author Daniel Fuchs
- * @bug 5072476
+ * @bug 5072476 6768935
  * @run clean LeadingSeparatorsTest Wombat WombatMBean
  * @compile -XDignore.symbol.file=true  LeadingSeparatorsTest.java
  * @run build LeadingSeparatorsTest Wombat WombatMBean
@@ -36,6 +36,7 @@
 import java.util.Set;
 import java.util.HashSet;
 import java.util.logging.Logger;
+import javax.management.InstanceNotFoundException;
 import javax.management.MBeanServer;
 import javax.management.MBeanServerFactory;
 import javax.management.NotCompliantMBeanException;
@@ -121,19 +122,29 @@
             // register wombat using an object name with a leading //
             final Object     obj = new MyWombat();
             // check that returned object name doesn't have the leading //
-            assertEquals(n2,top.registerMBean(obj, n1).getObjectName());
+            assertEquals(n2,top.registerMBean(obj, n2).getObjectName());
             System.out.println(n1+" registered");
 
             // check that the registered Wombat can be accessed with all its
             // names.
             System.out.println(n2+" mood is: "+top.getAttribute(n2, "Mood"));
-            System.out.println(n1+" mood is: "+top.getAttribute(n1, "Mood"));
+            try {
+                System.out.println(n1+" mood is: "+top.getAttribute(n1, "Mood"));
+                throw new Exception("Excepected exception not thrown for "+n1);
+            } catch (InstanceNotFoundException x) {
+                System.out.println("OK: "+x);
+            }
             System.out.println(n4+" mood is: "+top.getAttribute(n4, "Mood"));
-            System.out.println(n3+" mood is: "+top.getAttribute(n3, "Mood"));
+            try {
+                System.out.println(n3+" mood is: "+top.getAttribute(n3, "Mood"));
+                throw new Exception("Excepected exception not thrown for "+n3);
+            } catch (InstanceNotFoundException x) {
+                System.out.println("OK: "+x);
+            }
 
             // call listMatching. The result should not contain any prefix.
             final Set<ObjectName> res = (Set<ObjectName>)
-                    top.invoke(n3, "listMatching",
+                    top.invoke(n4, "listMatching",
                     // remove rmi// from rmi//*:*
                     JMXNamespaces.deepReplaceHeadNamespace(
                     new Object[] {ObjectName.WILDCARD.withDomain("rmi//*")},
@@ -158,7 +169,7 @@
             // //niark//niark//
             //
             final Set<ObjectName> res4 = (Set<ObjectName>)
-                    top.invoke(n3, "untrue",
+                    top.invoke(n4, "untrue",
                     // remove niark//niark : should remove nothing since
                     // our ObjectName begins with a leading //
                     JMXNamespaces.deepReplaceHeadNamespace(
--- a/test/javax/management/namespace/NamespaceNotificationsTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/NamespaceNotificationsTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -206,18 +206,10 @@
             aconn.addNotificationListener(deep,listener,null,deep);
 
 
-            final JMXServiceURL urlx = new JMXServiceURL(url1.toString());
-            System.out.println("conn: "+urlx);
-            final JMXConnector jc2 = JMXNamespaces.narrowToNamespace(
-                    JMXConnectorFactory.connect(urlx),"server1//server1");
-            final JMXConnector jc3 = JMXNamespaces.narrowToNamespace(jc2,"server3");
-            jc3.connect();
-            System.out.println("JC#3: " +
-                    ((jc3 instanceof JMXAddressable)?
-                        ((JMXAddressable)jc3).getAddress():
-                        jc3.toString()));
-            final MBeanServerConnection bconn =
-                    jc3.getMBeanServerConnection();
+            MBeanServerConnection iconn =
+                    JMXNamespaces.narrowToNamespace(aconn, "server1//server1");
+            MBeanServerConnection bconn =
+                    JMXNamespaces.narrowToNamespace(aconn, "server3");
             final ObjectName shallow =
                     new ObjectName("bush:"+
                     deep.getKeyPropertyListString());
--- a/test/javax/management/namespace/NullDomainObjectNameTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/NullDomainObjectNameTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -40,6 +40,7 @@
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
+import javax.management.RuntimeOperationsException;
 import javax.management.namespace.JMXNamespaces;
 import javax.management.namespace.JMXRemoteNamespace;
 import javax.management.namespace.JMXNamespace;
@@ -155,7 +156,7 @@
             // namespace.
             //
             RoutingServerProxy proxy =
-                    new RoutingServerProxy(sub, "", "faked", false);
+                    new RoutingServerProxy(sub, "", "faked", true);
 
             // These should fail because the ObjectName doesn't start
             // with "faked//"
@@ -215,9 +216,20 @@
                 assertEquals(proxy.queryNames(
                         new ObjectName(":*"),null).
                         contains(moi3.getObjectName()),true);
-                failed("queryNames(null,null) should have failed for faked//");
-            } catch (IllegalArgumentException x) {
-                System.out.println("Received expected exception for faked//: "+x);
+                failed("queryNames(new ObjectName(\":*\"),null) " +
+                        "should have failed for faked//");
+            } catch (RuntimeOperationsException x) {
+                if (x.getCause() instanceof IllegalArgumentException)
+                    System.out.println(
+                            "Received expected exception for faked//: "+x);
+                else {
+                    System.err.println(
+                            "Expected exception has unexpected cause " +
+                            "for faked//: "+x.getCause());
+                    x.printStackTrace();
+                    failed("queryNames(new ObjectName(\":*\"),null)" +
+                            " failed with unexpected cause for faked//");
+                }
             }
             // These should fail because the ObjectName doesn't start
             // with "faked//"
@@ -226,9 +238,20 @@
                     "new ObjectName(\":*\"),null) with faked//");
                 assertEquals(proxy.queryMBeans(
                         new ObjectName(":*"),null).contains(moi3),true);
-                failed("queryMBeans(null,null) should have failed for faked//");
-            } catch (IllegalArgumentException x) {
-                System.out.println("Received expected exception for faked//: "+x);
+                failed("queryMBeans(new ObjectName(\":*\"),null)" +
+                    " should have failed for faked//");
+            } catch (RuntimeOperationsException x) {
+                if (x.getCause() instanceof IllegalArgumentException)
+                    System.out.println(
+                            "Received expected exception for faked//: "+x);
+                else {
+                    System.err.println(
+                            "Expected exception has unexpected cause " +
+                            "for faked//: "+x.getCause());
+                    x.printStackTrace();
+                    failed("queryMBeans(new ObjectName(\":*\"),null) " +
+                            "failed with unexpected cause for faked//");
+                }
             }
 
             System.out.println("Checking queryNames(faked//*:*,null)");
--- a/test/javax/management/namespace/NullObjectNameTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/NullObjectNameTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -41,6 +41,7 @@
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
+import javax.management.RuntimeOperationsException;
 import javax.management.namespace.JMXNamespaces;
 import javax.management.namespace.JMXRemoteNamespace;
 import javax.management.namespace.JMXNamespace;
@@ -162,7 +163,7 @@
             // this case.
             //
             RoutingServerProxy proxy =
-                    new RoutingServerProxy(sub,"","faked",false);
+                    new RoutingServerProxy(sub, "", "faked", true);
             final ObjectInstance moi3 =
                     proxy.registerMBean(new MyWombat(),null);
             System.out.println(moi3.getObjectName().toString()+
@@ -189,15 +190,35 @@
                 assertEquals(proxy.queryNames(null,null).
                         contains(moi3.getObjectName()),true);
                 failed("queryNames(null,null) should have failed for faked//");
-            } catch (IllegalArgumentException x) {
-                System.out.println("Received expected exception for faked//: "+x);
+            } catch (RuntimeOperationsException x) {
+                if (x.getCause() instanceof IllegalArgumentException)
+                    System.out.println(
+                            "Received expected exception for faked//: "+x);
+                else {
+                    System.err.println(
+                            "Expected exception has unexpected cause " +
+                            "for faked//: "+x.getCause());
+                    x.printStackTrace();
+                    failed("queryNames(null,null) failed with unexpected " +
+                            "cause for faked//");
+                }
             }
             try {
                 System.out.println("Checking queryMBeans(null,null) with faked//");
                 assertEquals(proxy.queryMBeans(null,null).contains(moi3),true);
                 failed("queryMBeans(null,null) should have failed for faked//");
-            } catch (IllegalArgumentException x) {
-                System.out.println("Received expected exception for faked//: "+x);
+            } catch (RuntimeOperationsException x) {
+                if (x.getCause() instanceof IllegalArgumentException)
+                    System.out.println(
+                            "Received expected exception for faked//: "+x);
+                else {
+                    System.err.println(
+                            "Expected exception has unexpected cause " +
+                            "for faked//: "+x.getCause());
+                    x.printStackTrace();
+                    failed("queryMBeans(null,null) failed with unexpected " +
+                            "cause for faked//");
+                }
             }
             System.out.println("Checking queryNames(faked//*:*,null)");
             assertEquals(proxy.queryNames(new ObjectName("faked//*:*"),null).
--- a/test/javax/management/namespace/QueryNamesTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/namespace/QueryNamesTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -25,7 +25,7 @@
  * @test QueryNamesTest.java 1.4
  * @summary Test how queryNames works with Namespaces.
  * @author Daniel Fuchs
- * @bug 5072476
+ * @bug 5072476 6768935
  * @run clean QueryNamesTest Wombat WombatMBean
  * @run build QueryNamesTest Wombat WombatMBean
  * @run main QueryNamesTest
@@ -34,6 +34,7 @@
 
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
@@ -52,7 +53,9 @@
 import javax.management.MBeanServerConnection;
 import javax.management.MBeanServerFactory;
 import javax.management.MalformedObjectNameException;
+import javax.management.ObjectInstance;
 import javax.management.ObjectName;
+import javax.management.RuntimeOperationsException;
 import javax.management.namespace.JMXNamespace;
 import javax.management.namespace.JMXNamespaces;
 
@@ -366,6 +369,66 @@
         return res;
     }
 
+    private static void checkNsPattern(MBeanServer server) throws Exception {
+        final List<String> list = new ArrayList<String>();
+        for (String s : namespaces) {
+            final String[] cmpnt = s.split("//");
+            for (int i=0;i<cmpnt.length;i++) {
+                final String[] clone = cmpnt.clone();
+                if (clone[i].length() < 3) {
+                    clone[i] = "*";
+                } else {
+                    clone[i] = "?"+cmpnt[i].substring(1, cmpnt[i].length()-2)+"*";
+                }
+                final StringBuilder sb = new StringBuilder();
+                for (int j=0;j<cmpnt.length;j++) {
+                    sb.append(clone[j]).append("//");
+                }
+                list.add(sb.toString()+"*:*");
+            }
+        }
+        for (String s : list) {
+            final Set<ObjectName> res = new HashSet<ObjectName>();
+
+            try {
+                res.addAll(server.queryNames(ObjectName.valueOf(s),null));
+            } catch (RuntimeOperationsException x) {
+                if (x.getCause() instanceof IllegalArgumentException) {
+                    System.out.println("queryNames("+s+"): OK - received "+x.getCause());
+                    continue;
+                }
+                System.err.println("queryNames("+s+"): Bad cause: "+x.getCause());
+                throw x;
+            } catch (Exception x) {
+                System.err.println("queryNames("+s+"): Bad exception: "+x);
+                throw x;
+            }
+            System.err.println("queryNames("+s+"): Bad result: "+res);
+            System.err.println("queryNames("+s+"): Excpected exception not thrown.");
+            throw new Exception("queryNames("+s+"): Excpected exception not thrown.");
+        }
+        for (String s : list) {
+            final Set<ObjectInstance> res = new HashSet<ObjectInstance>();
+
+            try {
+                res.addAll(server.queryMBeans(ObjectName.valueOf(s),null));
+            } catch (RuntimeOperationsException x) {
+                if (x.getCause() instanceof IllegalArgumentException) {
+                    System.out.println("queryMBeans("+s+"): OK - received "+x.getCause());
+                    continue;
+                }
+                System.err.println("queryMBeans("+s+"): Bad cause: "+x.getCause());
+                throw x;
+            } catch (Exception x) {
+                System.err.println("queryMBeans("+s+"): Bad exception: "+x);
+                throw x;
+            }
+            System.err.println("queryMBeans("+s+"): Bad result: "+res);
+            System.err.println("queryMBeans("+s+"): Excpected exception not thrown.");
+            throw new Exception("queryMBeans("+s+"): Excpected exception not thrown.");
+        }
+    }
+
     public static void main(String[] args)
         throws Exception {
         final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
@@ -378,6 +441,7 @@
             System.out.println("Domains: " +Arrays.asList(server.getDomains()));
             checkRegistration(server);
             checkNsQuery(server);
+            checkNsPattern(server);
         } finally {
             boolean res = true;
             res = res && removeWombats(server, wombats);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/notification/SupportClearTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6336980
+ * @summary test 2 new methods: isListenedTo() and clear()
+ * @author Shanliang JIANG
+ * @run clean SupportClearTest
+ * @run build SupportClearTest
+ * @run main SupportClearTest
+ */
+
+import javax.management.*;
+
+public class SupportClearTest {
+    private static boolean received = false;
+
+    public static void main(String[] args) throws Exception {
+        System.out.println(">>> test 2 new methods: isListenedTo() and clear().");
+
+        final NotificationListener listener = new NotificationListener() {
+                public void handleNotification(Notification n, Object hb) {
+                    received = true;
+                }
+            };
+
+        final NotificationBroadcasterSupport broadcaster =
+                new NotificationBroadcasterSupport();
+
+        System.out.println(">>> testing the method \"isListenedTo\"...");
+        if (broadcaster.isListenedTo()) {
+            throw new RuntimeException(
+                    "Bad implementation of the method \"isListenedTo\"!");
+        }
+
+        broadcaster.addNotificationListener(listener, null, null);
+
+        if (!broadcaster.isListenedTo()) {
+            throw new RuntimeException(
+                    "Bad implementation of the method \"isListenedTo\"!");
+        }
+
+        System.out.println(">>> testing the method \"clear\"...");
+        broadcaster.removeAllNotificationListeners();
+        if (broadcaster.isListenedTo()) {
+            throw new RuntimeException(
+                    "Bad implementation of the method \"clear\"!");
+        }
+
+        broadcaster.sendNotification(new Notification("", "", 1L));
+
+        if (received) {
+            throw new RuntimeException(
+                    "Bad implementation of the method \"clear\"!");
+        }
+
+        System.out.println(">>> PASSED!");
+    }
+}
--- a/test/javax/management/openmbean/CompositeDataStringTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/openmbean/CompositeDataStringTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -21,19 +21,19 @@
  * have any questions.
  */
 
-import javax.management.openmbean.CompositeType;
-import javax.management.openmbean.OpenType;
-import javax.management.openmbean.SimpleType;
-
 /*
  * @test
  * @bug 6610174
  * @summary Test that CompositeDataSupport.toString() represents arrays correctly
  * @author Eamonn McManus
  */
+
 import javax.management.openmbean.ArrayType;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
 
 public class CompositeDataStringTest {
     public static void main(String[] args) throws Exception {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/openmbean/CompositeDataToMapTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6750472 6752563
+ * @summary Test CompositeDataSupport.toMap.
+ * @author Eamonn McManus
+ * @run main/othervm -ea CompositeDataToMapTest
+ */
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+
+public class CompositeDataToMapTest {
+    private static class IdentityInvocationHandler implements InvocationHandler {
+        private final Object wrapped;
+
+        public IdentityInvocationHandler(Object wrapped) {
+            this.wrapped = wrapped;
+        }
+
+        public Object invoke(Object proxy, Method m, Object[] args)
+                throws Throwable {
+            try {
+                return m.invoke(wrapped, args);
+            } catch (InvocationTargetException e) {
+                throw e.getCause();
+            }
+        }
+    }
+
+    private static <T> T wrap(T x, Class<T> intf) {
+        InvocationHandler ih = new IdentityInvocationHandler(x);
+        return intf.cast(Proxy.newProxyInstance(
+                intf.getClassLoader(), new Class<?>[] {intf}, ih));
+    }
+
+    public static void main(String[] args) throws Exception {
+        if (!CompositeDataToMapTest.class.desiredAssertionStatus())
+            throw new AssertionError("Must be run with -ea");
+
+        CompositeType emptyCT = new CompositeType(
+                "empty", "empty", new String[0], new String[0], new OpenType<?>[0]);
+        CompositeData emptyCD = new CompositeDataSupport(
+                emptyCT, Collections.<String, Object>emptyMap());
+        assert CompositeDataSupport.toMap(emptyCD).isEmpty() :
+            "Empty CD produces empty Map";
+
+        CompositeData emptyCD2 = new CompositeDataSupport(
+                emptyCT, new String[0], new Object[0]);
+        assert emptyCD.equals(emptyCD2) : "Empty CD can be constructed two ways";
+
+        CompositeType namedNumberCT = new CompositeType(
+                "NamedNumber", "NamedNumber",
+                new String[] {"name", "number"},
+                new String[] {"name", "number"},
+                new OpenType<?>[] {SimpleType.STRING, SimpleType.INTEGER});
+        Map<String, Object> namedNumberMap = new HashMap<String, Object>();
+        namedNumberMap.put("name", "Deich");
+        namedNumberMap.put("number", 10);
+        CompositeData namedNumberCD = new CompositeDataSupport(
+                namedNumberCT, namedNumberMap);
+        assert CompositeDataSupport.toMap(namedNumberCD).equals(namedNumberMap) :
+            "Map survives passage through CompositeData";
+
+        namedNumberCD = wrap(namedNumberCD, CompositeData.class);
+        assert CompositeDataSupport.toMap(namedNumberCD).equals(namedNumberMap) :
+            "Map survives passage through wrapped CompositeData";
+
+        namedNumberMap = CompositeDataSupport.toMap(namedNumberCD);
+        namedNumberMap.put("name", "Ceathar");
+        namedNumberMap.put("number", 4);
+        namedNumberCD = new CompositeDataSupport(namedNumberCT, namedNumberMap);
+        assert CompositeDataSupport.toMap(namedNumberCD).equals(namedNumberMap) :
+            "Modified Map survives passage through CompositeData";
+
+        try {
+            namedNumberMap = CompositeDataSupport.toMap(null);
+            assert false : "Null toMap arg provokes exception";
+        } catch (Exception e) {
+            assert e instanceof IllegalArgumentException :
+                "Exception for null toMap arg is IllegalArgumentException";
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/openmbean/GenericMBeanExceptionTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,278 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6456269
+ * @summary Test GenericMBeanException
+ * @author Eamonn McManus
+ */
+
+import java.beans.ConstructorProperties;
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import javax.management.GenericMBeanException;
+import javax.management.JMX;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+
+public class GenericMBeanExceptionTest {
+    private static volatile String failure = null;
+
+    public static interface ThrowerMBean {
+        public void throwGeneric() throws GenericMBeanException;
+        public void throwGeneric(Throwable cause) throws GenericMBeanException;
+        public void throwGeneric(String errorCode) throws GenericMBeanException;
+        public void throwGeneric(CompositeData userData) throws GenericMBeanException;
+        public void throwGeneric(String errorCode, CompositeData userData)
+                throws GenericMBeanException;
+        public void throwGeneric(String errorCode, CompositeData userData, Throwable cause)
+                throws GenericMBeanException;
+    }
+
+    public static class Thrower implements ThrowerMBean {
+
+        public void throwGeneric() throws GenericMBeanException {
+            throw new GenericMBeanException("Message");
+        }
+
+        public void throwGeneric(Throwable cause) throws GenericMBeanException {
+            throw new GenericMBeanException("Message", cause);
+        }
+
+        public void throwGeneric(String errorCode) throws GenericMBeanException {
+            throw new GenericMBeanException("Message", errorCode, null);
+        }
+
+        public void throwGeneric(CompositeData userData) throws GenericMBeanException {
+            throw new GenericMBeanException("Message", null, userData);
+        }
+
+        public void throwGeneric(String errorCode, CompositeData userData)
+                throws GenericMBeanException {
+            throw new GenericMBeanException("Message", errorCode, userData);
+        }
+
+        public void throwGeneric(String errorCode, CompositeData userData,
+                                 Throwable cause) throws GenericMBeanException {
+            throw new GenericMBeanException("Message", errorCode, userData, cause);
+        }
+    }
+
+    public static class Payload {
+        private final int severity;
+        private final String subsystem;
+
+        @ConstructorProperties({"severity", "subsystem"})
+        public Payload(int severity, String subsystem) {
+            this.severity = severity;
+            this.subsystem = subsystem;
+        }
+
+        public int getSeverity() {
+            return severity;
+        }
+
+        public String getSubsystem() {
+            return subsystem;
+        }
+
+        @Override
+        public boolean equals(Object x) {
+            if (!(x instanceof Payload))
+                return false;
+            Payload p = (Payload) x;
+            return (severity == p.severity &&
+                    (subsystem == null) ?
+                        p.subsystem == null : subsystem.equals(p.subsystem));
+        }
+
+        @Override
+        public int hashCode() {
+            return severity + subsystem.hashCode();
+        }
+
+        @Override
+        public String toString() {
+            return "Payload{severity: " + severity + ", subsystem: " + subsystem + "}";
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        ObjectName name = new ObjectName("test:type=Thrower");
+        Thrower thrower = new Thrower();
+        mbs.registerMBean(thrower, name);
+
+        if (args.length > 0) {
+            System.out.println("Attach client now, hit return to exit");
+            System.in.read();
+            return;
+        }
+
+        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://");
+        JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(
+                url, null, mbs);
+        cs.start();
+        JMXServiceURL addr = cs.getAddress();
+
+        JMXConnector cc = JMXConnectorFactory.connect(addr);
+        MBeanServerConnection mbsc = cc.getMBeanServerConnection();
+
+        ThrowerMBean throwerProxy = JMX.newMBeanProxy(mbsc, name, ThrowerMBean.class);
+
+        Payload payload = new Payload(5, "modular modulizer");
+        MXBeanMapping payloadMapping = MXBeanMappingFactory.DEFAULT.mappingForType(
+                Payload.class, MXBeanMappingFactory.DEFAULT);
+        CompositeData userData = (CompositeData)
+                payloadMapping.toOpenValue(payload);
+        Throwable cause = new IllegalArgumentException("Badness");
+
+        Object[][] testCases = {
+            {},
+            {"code1"},
+            {userData},
+            {"code2", userData},
+            {(String) null, userData},
+            {"code99", userData, cause},
+            {(String) null, userData, cause},
+        };
+
+        for (Object[] testCase : testCases) {
+            System.out.println("Test case: " + testCaseString(testCase));
+
+            // Find which ThrowerMBean method it corresponds to
+            Method testMethod = null;
+search:
+            for (Method m : ThrowerMBean.class.getMethods()) {
+                Class<?>[] paramTypes = m.getParameterTypes();
+                if (paramTypes.length != testCase.length)
+                    continue;
+                for (int i = 0; i < paramTypes.length; i++) {
+                    if (testCase[i] != null && !paramTypes[i].isInstance(testCase[i]))
+                        continue search;
+                }
+                testMethod = m;
+            }
+
+            if (testMethod == null) {
+                throw new Exception("TEST ERROR: no method corresponds: " +
+                        testCaseString(testCase));
+            }
+
+            try {
+                testMethod.invoke(throwerProxy, testCase);
+                fail("Did not throw exception", testCase);
+                continue;
+            } catch (InvocationTargetException e) {
+                Throwable iteCause = e.getCause();
+                if (!(iteCause instanceof GenericMBeanException)) {
+                    iteCause.printStackTrace(System.out);
+                    fail("Threw wrong exception " + iteCause, testCase);
+                    continue;
+                }
+                GenericMBeanException ge = (GenericMBeanException) iteCause;
+                if (!ge.getMessage().equals("Message"))
+                    fail("Wrong message: " + ge.getMessage(), testCase);
+
+                Class<?>[] paramTypes = testMethod.getParameterTypes();
+                for (int i = 0; i < paramTypes.length; i++) {
+                    Class<?> paramType = paramTypes[i];
+
+                    if (paramType == Throwable.class) { // cause
+                        Throwable geCause = ge.getCause();
+                        if (!(geCause instanceof IllegalArgumentException))
+                            fail("Wrong cause: " + geCause, testCase);
+                        else if (!geCause.getMessage().equals("Badness"))
+                            fail("Wrong cause message: " + geCause.getMessage(), testCase);
+                    } else if (paramType == String.class) { // errorCode
+                        String errorCode = ge.getErrorCode();
+                        String expectedErrorCode =
+                                (testCase[i] == null) ? "" : (String) testCase[i];
+                        if (!expectedErrorCode.equals(errorCode))
+                            fail("Wrong error code: " + ge.getErrorCode(), testCase);
+                    } else if (paramType == CompositeData.class) { // userData
+                        CompositeData userData2 = ge.getUserData();
+                        if (!userData.equals(userData2))
+                            fail("Wrong userData: " + userData2, testCase);
+                        Payload payload2 = (Payload) payloadMapping.fromOpenValue(userData2);
+                        if (!payload.equals(payload2))
+                            fail("Wrong payload: " + payload2, testCase);
+                    } else
+                        throw new Exception("TEST ERROR: unknown parameter type: " + paramType);
+                }
+            }
+        }
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    private static String testCaseString(Object[] testCase) {
+        StringBuilder sb = new StringBuilder("[");
+        String sep = "";
+        for (Object x : testCase) {
+            sb.append(sep);
+            String xs = (x instanceof CompositeData) ?
+                compositeDataString((CompositeData) x) : String.valueOf(x);
+            sb.append(xs);
+            sep = ", ";
+        }
+        sb.append("]");
+        return sb.toString();
+    }
+
+    private static String compositeDataString(CompositeData cd) {
+        StringBuilder sb = new StringBuilder("CompositeData{");
+        CompositeType ct = cd.getCompositeType();
+        String sep = "";
+        for (String key : ct.keySet()) {
+            sb.append(sep).append(key).append(": ").append(cd.get(key));
+            sep = ", ";
+        }
+        sb.append("}");
+        return sb.toString();
+    }
+
+    private static void fail(String why, Object[] testCase) {
+        fail(testCaseString(testCase) + ": " + why);
+    }
+
+    private static void fail(String why) {
+        failure = why;
+        System.out.println("FAIL: " + why);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/remote/mandatory/connection/DaemonRMIExporterTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+/*
+ * @test
+ * @bug 6760712
+ * @summary test the connector server option that causes it not to prevent the
+ * VM from exiting
+ * @author Shanliang JIANG, Eamonn McManus
+ * @run main/othervm DaemonRMIExporterTest
+ */
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.management.MBeanServerFactory;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+
+// Test the connector server option that causes it not to prevent the VM
+// from exiting.  It's tricky to test exactly that, though possible.  If
+// we're being run from within jtreg, then jtreg has threads of its own
+// that will prevent the VM from exiting.  What's more it will kill all
+// threads that the test created as soon as the main method returns,
+// including the ones that would prevent the VM from exiting without the
+// special option.
+// Here we check that the test code does not create
+// any permanent non-daemon threads, by recording the initial set of
+// non-daemon threads (including at least one from jtreg), doing our stuff,
+// then waiting for there to be no non-daemon threads that were not in
+// the initial set.
+public class DaemonRMIExporterTest {
+    public static void main(String[] args) throws Exception {
+        Set<Thread> initialNonDaemonThreads = getNonDaemonThreads();
+
+        JMXServiceURL addr = new JMXServiceURL("rmi", null, 0);
+        System.out.println("DaemonRMIExporterTest: Creating a RMIConnectorServer on " + addr);
+        Map<String, ?> env =
+            Collections.singletonMap("jmx.remote.x.daemon", "true");
+        JMXConnectorServer server =
+                JMXConnectorServerFactory.newJMXConnectorServer(addr,
+                env,
+                MBeanServerFactory.createMBeanServer());
+        server.start();
+        System.out.println("DaemonRMIExporterTest: Started the server on " + server.getAddress());
+
+        System.out.println("DaemonRMIExporterTest: Connecting a client to the server ...");
+        final JMXConnector conn = JMXConnectorFactory.connect(server.getAddress());
+        conn.getMBeanServerConnection().getDefaultDomain();
+
+        System.out.println("DaemonRMIExporterTest: Closing the client ...");
+        conn.close();
+
+        System.out.println("DaemonRMIExporterTest No more user code to execute, the VM should " +
+                "exit normally, otherwise will be blocked forever if the bug is not fixed.");
+
+        long deadline = System.currentTimeMillis() + 10000;
+        ok: {
+            while (System.currentTimeMillis() < deadline) {
+                Set<Thread> nonDaemonThreads = getNonDaemonThreads();
+                nonDaemonThreads.removeAll(initialNonDaemonThreads);
+                if (nonDaemonThreads.isEmpty())
+                    break ok;
+                System.out.println("Non-daemon threads: " + nonDaemonThreads);
+                try {
+                    Thread.sleep(500);
+                } catch (InterruptedException e) {
+                    throw new AssertionError(e);
+                }
+            }
+            throw new Exception("TEST FAILED: non-daemon threads remain");
+        }
+
+        System.out.println("TEST PASSED");
+    }
+
+    private static Set<Thread> getNonDaemonThreads() {
+        ThreadGroup tg = Thread.currentThread().getThreadGroup();
+        while (tg.getParent() != null)
+            tg = tg.getParent();
+        Thread[] threads = null;
+        for (int size = 10; size < 10000; size *= 2) {
+            threads = new Thread[size];
+            int n = tg.enumerate(threads, true);
+            if (n < size) {
+                threads = Arrays.copyOf(threads, n);
+                break;
+            }
+        }
+        Set<Thread> ndThreads = new HashSet<Thread>();
+        for (Thread t : threads) {
+            if (!t.isDaemon())
+                ndThreads.add(t);
+        }
+        return ndThreads;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/remote/mandatory/connectorServer/CloseConnectionTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,217 @@
+/*
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+/*
+ * @test
+ * @bug 6332907
+ * @summary test the ability for connector server to close individual connections
+ * @author Shanliang JIANG
+ * @run clean CloseConnectionTest
+ * @run build CloseConnectionTest
+ * @run main CloseConnectionTest
+ */
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.management.MBeanServerFactory;
+
+import javax.management.Notification;
+import javax.management.NotificationListener;
+import javax.management.remote.JMXConnectionNotification;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+
+public class CloseConnectionTest {
+
+    public static void main(String[] args) throws Exception {
+        System.out.println(">>> Test the ability for connector server to close " +
+                "individual connections.");
+
+        final String[] protos = new String[]{"rmi", "iiop", "jmxmp"};
+        for (String p : protos) {
+            System.out.println("\n>>> Testing the protocol " + p);
+            JMXServiceURL addr = new JMXServiceURL(p, null, 0);
+            System.out.println(">>> Creating a JMXConnectorServer on " + addr);
+            JMXConnectorServer server = null;
+            try {
+                server = JMXConnectorServerFactory.newJMXConnectorServer(addr,
+                        null,
+                        MBeanServerFactory.createMBeanServer());
+            } catch (Exception e) {
+                System.out.println(">>> Skip the protocol: " + p);
+                continue;
+            }
+
+            test1(server);
+            test2(server);
+
+            server.stop();
+        }
+
+        System.out.println(">>> Bye bye!");
+    }
+
+    private static void test1(JMXConnectorServer server) throws Exception {
+        try {
+            server.closeConnection("toto");
+            // not started, known id
+            throw new RuntimeException("An IllegalArgumentException is not thrown.");
+        } catch (IllegalStateException e) {
+            System.out.println(">>> Test1: Got expected IllegalStateException: " + e);
+        }
+
+        server.start();
+        System.out.println(">>>Test1 Started the server on " + server.getAddress());
+
+        try {
+            server.closeConnection("toto");
+            throw new RuntimeException("An IllegalArgumentException is not thrown.");
+        } catch (IllegalArgumentException e) {
+            System.out.println(">> Test1: Got expected IllegalArgumentException: " + e);
+        }
+
+        MyListener listener = new MyListener();
+        server.addNotificationListener(listener, null, null);
+
+        System.out.println(">>> Test1: Connecting a client to the server ...");
+        final JMXConnector conn = JMXConnectorFactory.connect(server.getAddress());
+        conn.getMBeanServerConnection().getDefaultDomain();
+        final String id1 = conn.getConnectionId();
+
+        listener.wait(JMXConnectionNotification.OPENED, timeout);
+
+        System.out.println(">>> Test1: Closing the connection: " + conn.getConnectionId());
+        server.closeConnection(id1);
+        listener.wait(JMXConnectionNotification.CLOSED, timeout);
+
+        System.out.println(">>> Test1: Using again the connector whose connection " +
+                "should be closed by the server, it should reconnect " +
+                "automatically to the server and get a new connection id.");
+        conn.getMBeanServerConnection().getDefaultDomain();
+        final String id2 = conn.getConnectionId();
+        listener.wait(JMXConnectionNotification.OPENED, timeout);
+
+        if (id1.equals(id2)) {
+            throw new RuntimeException("Failed, the first client connection is not closed.");
+        }
+
+        System.out.println(">>> Test1: Greate, we get a new connection id " + id2 +
+                ", the first one is closed as expected.");
+
+        System.out.println(">>> Test1: Closing the client.");
+        conn.close();
+        System.out.println(">>> Test1: Stopping the server.");
+        server.removeNotificationListener(listener);
+    }
+
+    private static void test2(JMXConnectorServer server) throws Exception {
+        System.out.println(">>> Test2 close a connection before " +
+                "the client can use it...");
+        final Killer killer = new Killer(server);
+        server.addNotificationListener(killer, null, null);
+
+        System.out.println(">>> Test2 Connecting a client to the server ...");
+        final JMXConnector conn;
+        try {
+            conn = JMXConnectorFactory.connect(server.getAddress());
+            throw new RuntimeException(">>> Failed, do not receive an " +
+                    "IOException telling the connection is refused.");
+        } catch (IOException ioe) {
+            System.out.println(">>> Test2 got expected IOException: "+ioe);
+        }
+    }
+
+    private static class MyListener implements NotificationListener {
+        public void handleNotification(Notification n, Object hb) {
+            if (n instanceof JMXConnectionNotification) {
+                synchronized (received) {
+                    received.add((JMXConnectionNotification) n);
+                    received.notify();
+                }
+            }
+        }
+
+        public JMXConnectionNotification wait(String type, long timeout)
+                throws Exception {
+            JMXConnectionNotification waited = null;
+            long toWait = timeout;
+            long deadline = System.currentTimeMillis() + timeout;
+            synchronized (received) {
+                while (waited == null && toWait > 0) {
+                    received.wait(toWait);
+                    for (JMXConnectionNotification n : received) {
+                        if (type.equals(n.getType())) {
+                            waited = n;
+                            break;
+                        }
+                    }
+                    received.clear();
+                    toWait = deadline - System.currentTimeMillis();
+                }
+            }
+
+            if (waited == null) {
+                throw new RuntimeException("Do not receive expected notification " + type);
+            } else {
+                System.out.println(">>> Received expected notif: "+type+
+                        " "+waited.getConnectionId());
+            }
+
+            return waited;
+        }
+
+        final List<JMXConnectionNotification> received =
+                new ArrayList<JMXConnectionNotification>();
+    }
+
+    private static class Killer implements NotificationListener {
+        public Killer(JMXConnectorServer server) {
+            this.server = server;
+        }
+        public void handleNotification(Notification n, Object hb) {
+            if (n instanceof JMXConnectionNotification) {
+                if (JMXConnectionNotification.OPENED.equals(n.getType())) {
+                    final JMXConnectionNotification cn =
+                            (JMXConnectionNotification)n;
+                    try {
+                        System.out.println(">>> Killer: close the connection "+
+                                cn.getConnectionId());
+                        server.closeConnection(cn.getConnectionId());
+                    } catch (Exception e) {
+                        // impossible?
+                        e.printStackTrace();
+                        System.exit(1);
+                    }
+                }
+            }
+        }
+
+        private final JMXConnectorServer server;
+    }
+
+    private static final long timeout = 6000;
+}
--- a/test/javax/management/remote/mandatory/connectorServer/ForwarderChainTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/remote/mandatory/connectorServer/ForwarderChainTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -86,16 +86,20 @@
         test(cs, mbs);
 
         System.out.println("===Remove any leftover forwarders===");
-        while (cs.getSystemMBeanServer() instanceof MBeanServerForwarder) {
-            MBeanServerForwarder mbsf =
-                    (MBeanServerForwarder) cs.getSystemMBeanServer();
-            cs.removeMBeanServerForwarder(mbsf);
+        MBeanServerForwarder systemMBSF = cs.getSystemMBeanServerForwarder();
+        // Real code would just do systemMBSF.setMBeanServer(mbs).
+        while (true) {
+            MBeanServer xmbs = systemMBSF.getMBeanServer();
+            if (!(xmbs instanceof MBeanServerForwarder))
+                break;
+            cs.removeMBeanServerForwarder((MBeanServerForwarder) xmbs);
         }
         expectChain(cs, "U", mbs);
 
         System.out.println("===Ensure forwarders are called===");
         cs.setMBeanServerForwarder(forwarders[0]);
-        cs.setSystemMBeanServerForwarder(forwarders[1]);
+        systemMBSF.setMBeanServer(forwarders[1]);
+        forwarders[1].setMBeanServer(forwarders[0]);
         expectChain(cs, "1U0", mbs);
         cs.start();
         if (forwarders[0].defaultDomainCount != 0 ||
@@ -125,8 +129,8 @@
     private static void test(JMXConnectorServer cs, MBeanServer end) {
         // A newly-created connector server might have system forwarders,
         // so get rid of those.
-        while (cs.getSystemMBeanServer() != cs.getMBeanServer())
-            cs.removeMBeanServerForwarder((MBeanServerForwarder) cs.getSystemMBeanServer());
+        MBeanServerForwarder systemMBSF = cs.getSystemMBeanServerForwarder();
+        systemMBSF.setMBeanServer(cs.getMBeanServer());
 
         expectChain(cs, "U", end);
 
@@ -139,7 +143,8 @@
         expectChain(cs, "U10", end);
 
         System.out.println("Add a system forwarder");
-        cs.setSystemMBeanServerForwarder(forwarders[2]);
+        forwarders[2].setMBeanServer(systemMBSF.getMBeanServer());
+        systemMBSF.setMBeanServer(forwarders[2]);
         expectChain(cs, "2U10", end);
 
         System.out.println("Add another user forwarder");
@@ -147,7 +152,8 @@
         expectChain(cs, "2U310", end);
 
         System.out.println("Add another system forwarder");
-        cs.setSystemMBeanServerForwarder(forwarders[4]);
+        forwarders[4].setMBeanServer(systemMBSF.getMBeanServer());
+        systemMBSF.setMBeanServer(forwarders[4]);
         expectChain(cs, "42U310", end);
 
         System.out.println("Remove the first user forwarder");
@@ -215,9 +221,8 @@
                     }
                     case 2: { // add it to the system chain
                         System.out.println("Add " + c + " to system chain");
-                        if (cs.getSystemMBeanServer() == null)
-                            mbsf.setMBeanServer(null);
-                        cs.setSystemMBeanServerForwarder(mbsf);
+                        mbsf.setMBeanServer(systemMBSF.getMBeanServer());
+                        systemMBSF.setMBeanServer(mbsf);
                         chain = c + chain;
                         break;
                     }
@@ -240,7 +245,7 @@
     private static void expectChain(
             JMXConnectorServer cs, String chain, MBeanServer end) {
         System.out.println("...expected chain: " + chain);
-        MBeanServer curr = cs.getSystemMBeanServer();
+        MBeanServer curr = cs.getSystemMBeanServerForwarder().getMBeanServer();
         int i = 0;
         while (i < chain.length()) {
             char c = chain.charAt(i);
--- a/test/javax/management/remote/mandatory/connectorServer/StandardForwardersTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/remote/mandatory/connectorServer/StandardForwardersTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -26,6 +26,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.management.ClientContext;
 import javax.management.MBeanServer;
 import javax.management.event.EventClientDelegate;
 import javax.management.remote.JMXConnectorServer;
@@ -62,13 +63,23 @@
     public static void main(String[] args) throws Exception {
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
 
+        MBeanServerForwarder ctxFwd = ClientContext.newContextForwarder(mbs, null);
+        Forwarder ctx = new Forwarder(
+                JMXConnectorServer.CONTEXT_FORWARDER, true, ctxFwd.getClass());
+
+        MBeanServerForwarder locFwd =
+                ClientContext.newLocalizeMBeanInfoForwarder(mbs);
+        Forwarder loc = new Forwarder(
+                JMXConnectorServer.LOCALIZE_MBEAN_INFO_FORWARDER, false,
+                locFwd.getClass());
+
         MBeanServerForwarder ecdFwd =
-                EventClientDelegate.newForwarder();
+                EventClientDelegate.newForwarder(mbs, null);
         Forwarder ecd = new Forwarder(
                 JMXConnectorServer.EVENT_CLIENT_DELEGATE_FORWARDER, true,
                 ecdFwd.getClass());
 
-        Forwarder[] forwarders = {ecd};
+        Forwarder[] forwarders = {ctx, loc, ecd};
 
         // Now go through every combination of forwarders.  Each forwarder
         // may be explicitly enabled, explicitly disabled, or left to its
@@ -154,9 +165,11 @@
         }
         MBeanServer stop = cs.getMBeanServer();
         List<Class<?>> foundClasses = new ArrayList<Class<?>>();
-        for (MBeanServer mbs = cs.getSystemMBeanServer(); mbs != stop;
-             mbs = ((MBeanServerForwarder) mbs).getMBeanServer())
+        for (MBeanServer mbs = cs.getSystemMBeanServerForwarder().getMBeanServer();
+             mbs != stop;
+             mbs = ((MBeanServerForwarder) mbs).getMBeanServer()) {
             foundClasses.add(mbs.getClass());
+        }
         if (!expectedClasses.equals(foundClasses)) {
             fail("Incorrect forwarder chain: expected " + expectedClasses +
                     "; found " + foundClasses);
@@ -165,9 +178,12 @@
 
     // env is consistent if either (a) localizer is not enabled or (b)
     // localizer is enabled and context is enabled.
-    // Neither of those is present in this codebase so env is always consistent.
     private static boolean isConsistent(Map<String, String> env) {
-        return true;
+        String ctxS = env.get(JMXConnectorServer.CONTEXT_FORWARDER);
+        boolean ctx = (ctxS == null) ? true : Boolean.parseBoolean(ctxS);
+        String locS = env.get(JMXConnectorServer.LOCALIZE_MBEAN_INFO_FORWARDER);
+        boolean loc = (locS == null) ? false : Boolean.parseBoolean(locS);
+        return !loc || ctx;
     }
 
     private static void fail(String why) {
--- a/test/javax/management/remote/mandatory/provider/ProviderTest.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/remote/mandatory/provider/ProviderTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -46,6 +46,8 @@
 /*
  * Tests jar services provider are called
  */
+import provider.JMXConnectorProviderImpl;
+import provider.JMXConnectorServerProviderImpl;
 public class ProviderTest {
     public static void main(String[] args) throws Exception {
         System.out.println("Starting ProviderTest");
@@ -56,8 +58,14 @@
 
         dotest(url, mbs);
 
-        if(!provider.JMXConnectorProviderImpl.called() ||
-           !provider.JMXConnectorServerProviderImpl.called()) {
+        boolean clientCalled = provider.JMXConnectorProviderImpl.called();
+        boolean serverCalled = provider.JMXConnectorServerProviderImpl.called();
+        boolean ok = clientCalled && serverCalled;
+        if (!ok) {
+            if (!clientCalled)
+                System.out.println("Client provider not called");
+            if (!serverCalled)
+                System.out.println("Server provider not called");
             System.out.println("Test Failed");
             System.exit(1);
         }
--- a/test/javax/management/remote/mandatory/subjectDelegation/SimpleStandard.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/management/remote/mandatory/subjectDelegation/SimpleStandard.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  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
@@ -75,7 +75,7 @@
      * @return the current value of the "State" attribute.
      */
     public String getState() {
-        checkSubject();
+        checkSubject("getState");
         return state;
     }
 
@@ -85,7 +85,7 @@
      * @param <VAR>s</VAR> the new value of the "State" attribute.
      */
     public void setState(String s) {
-        checkSubject();
+        checkSubject("setState");
         state = s;
         nbChanges++;
     }
@@ -97,7 +97,7 @@
      * @return the current value of the "NbChanges" attribute.
      */
     public int getNbChanges() {
-        checkSubject();
+        checkSubject("getNbChanges");
         return nbChanges;
     }
 
@@ -106,7 +106,7 @@
      * attributes of the "SimpleStandard" standard MBean.
      */
     public void reset() {
-        checkSubject();
+        checkSubject("reset");
         AttributeChangeNotification acn =
             new AttributeChangeNotification(this,
                                             0,
@@ -149,18 +149,18 @@
      * Check that the principal contained in the Subject is of
      * type JMXPrincipal and refers to the principalName identity.
      */
-    private void checkSubject() {
+    private void checkSubject(String op) {
         AccessControlContext acc = AccessController.getContext();
         Subject subject = Subject.getSubject(acc);
         Set principals = subject.getPrincipals();
         Principal principal = (Principal) principals.iterator().next();
         if (!(principal instanceof JMXPrincipal))
-            throw new SecurityException("Authenticated subject contains " +
+            throw new SecurityException(op+": Authenticated subject contains " +
                                         "invalid principal type = " +
                                         principal.getClass().getName());
         String identity = principal.getName();
         if (!identity.equals(principalName))
-            throw new SecurityException("Authenticated subject contains " +
+            throw new SecurityException(op+": Authenticated subject contains " +
                                         "invalid principal name = " + identity);
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/remote/mandatory/version/JMXSpecVersionTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,308 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6750008
+ * @summary Test JMX.getSpecificationVersion
+ * @author Eamonn McManus
+ */
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.ListIterator;
+import java.util.Set;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.DynamicMBean;
+import javax.management.InstanceNotFoundException;
+import javax.management.InvalidAttributeValueException;
+import javax.management.JMX;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerDelegate;
+import javax.management.MBeanServerDelegateMBean;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+import javax.management.StandardMBean;
+import javax.management.namespace.JMXNamespace;
+import javax.management.namespace.JMXNamespaces;
+import javax.management.namespace.MBeanServerSupport;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+
+public class JMXSpecVersionTest {
+    private static String failure;
+    private static final Object POISON_PILL = new Object();
+
+    private static class FakeDelegate implements DynamicMBean {
+        private final Object specVersion;
+        private final DynamicMBean delegate = new StandardMBean(
+                new MBeanServerDelegate(), MBeanServerDelegateMBean.class, false);
+
+        FakeDelegate(Object specVersion) {
+            this.specVersion = specVersion;
+        }
+
+        public Object getAttribute(String attribute)
+                throws AttributeNotFoundException, MBeanException,
+                ReflectionException {
+            if ("SpecificationVersion".equals(attribute)) {
+                if (specVersion == POISON_PILL)
+                    throw new AttributeNotFoundException(attribute);
+                else
+                    return specVersion;
+            } else
+                return delegate.getAttribute(attribute);
+        }
+
+        public void setAttribute(Attribute attribute)
+                throws AttributeNotFoundException, InvalidAttributeValueException,
+                MBeanException, ReflectionException {
+            delegate.setAttribute(attribute);
+        }
+
+        public AttributeList getAttributes(String[] attributes) {
+            AttributeList list = delegate.getAttributes(attributes);
+            for (ListIterator<Attribute> it = list.asList().listIterator();
+                 it.hasNext(); ) {
+                Attribute attr = it.next();
+                if (attr.getName().equals("SpecificationVersion")) {
+                    it.remove();
+                    if (specVersion != POISON_PILL) {
+                        attr = new Attribute(attr.getName(), specVersion);
+                        it.add(attr);
+                    }
+                }
+            }
+            return list;
+        }
+
+        public AttributeList setAttributes(AttributeList attributes) {
+            return delegate.setAttributes(attributes);
+        }
+
+        public Object invoke(String actionName, Object[] params,
+                             String[] signature) throws MBeanException,
+                                                        ReflectionException {
+            return delegate.invoke(actionName, params, signature);
+        }
+
+        public MBeanInfo getMBeanInfo() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+    }
+
+    private static class MBeanServerWithVersion extends MBeanServerSupport {
+        private final DynamicMBean delegate;
+
+        public MBeanServerWithVersion(Object specVersion) {
+            this.delegate = new FakeDelegate(specVersion);
+        }
+
+        @Override
+        public DynamicMBean getDynamicMBeanFor(ObjectName name)
+                throws InstanceNotFoundException {
+            if (MBeanServerDelegate.DELEGATE_NAME.equals(name))
+                return delegate;
+            else
+                throw new InstanceNotFoundException(name);
+        }
+
+        @Override
+        protected Set<ObjectName> getNames() {
+            return Collections.singleton(MBeanServerDelegate.DELEGATE_NAME);
+        }
+    }
+
+    private static class EmptyMBeanServer extends MBeanServerSupport {
+        @Override
+        public DynamicMBean getDynamicMBeanFor(ObjectName name) throws InstanceNotFoundException {
+            throw new InstanceNotFoundException(name);
+        }
+
+        @Override
+        protected Set<ObjectName> getNames() {
+            return Collections.emptySet();
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///");
+        JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(
+                url, null, mbs);
+        cs.start();
+
+        String realVersion = (String) mbs.getAttribute(
+                MBeanServerDelegate.DELEGATE_NAME, "SpecificationVersion");
+        assertEquals("Reported local version",
+                realVersion, JMX.getSpecificationVersion(mbs, null));
+        assertEquals("Reported local version >= \"2.0\"",
+                true, (realVersion.compareTo("2.0") >= 0));
+
+        JMXConnector cc = JMXConnectorFactory.connect(cs.getAddress());
+        MBeanServerConnection mbsc = cc.getMBeanServerConnection();
+        assertEquals("Reported remote version",
+                realVersion, JMX.getSpecificationVersion(mbsc, null));
+
+        cc.close();
+        try {
+            String brokenVersion = JMX.getSpecificationVersion(mbsc, null);
+            fail("JMX.getSpecificationVersion succeded over closed connection" +
+                    " (returned " + brokenVersion + ")");
+        } catch (Exception e) {
+            assertEquals("Exception for closed connection",
+                    IOException.class, e.getClass());
+        }
+
+        try {
+            String brokenVersion = JMX.getSpecificationVersion(
+                    new EmptyMBeanServer(), null);
+            fail("JMX.getSpecificationVersion succeded with empty MBean Server" +
+                    " (returned " + brokenVersion + ")");
+        } catch (Exception e) {
+            assertEquals("Exception for empty MBean Server",
+                    IOException.class, e.getClass());
+        }
+
+        try {
+            String brokenVersion = JMX.getSpecificationVersion(null, null);
+            fail("JMX.getSpecificationVersion succeded with null MBean Server" +
+                    " (returned " + brokenVersion + ")");
+        } catch (Exception e) {
+            assertEquals("Exception for null MBean Server",
+                    IllegalArgumentException.class, e.getClass());
+        }
+
+        MBeanServer mbs1_2 = new MBeanServerWithVersion("1.2");
+        String version1_2 = JMX.getSpecificationVersion(mbs1_2, null);
+        assertEquals("Version for 1.2 MBean Server", "1.2", version1_2);
+
+        // It's completely nutty for an MBean Server to return null as the
+        // value of its spec version, and we don't actually say what happens
+        // in that case, but in fact we return the null to the caller.
+        MBeanServer mbs_null = new MBeanServerWithVersion(null);
+        String version_null = JMX.getSpecificationVersion(mbs_null, null);
+        assertEquals("Version for MBean Server that declares null spec version",
+                null, version_null);
+
+        try {
+            MBeanServer mbs1_2_float = new MBeanServerWithVersion(1.2f);
+            String version1_2_float =
+                    JMX.getSpecificationVersion(mbs1_2_float, null);
+            fail("JMX.getSpecificationVersion succeeded with version 1.2f" +
+                    " (returned " + version1_2_float + ")");
+        } catch (Exception e) {
+            assertEquals("Exception for non-string version (1.2f)",
+                    IOException.class, e.getClass());
+        }
+
+        try {
+            MBeanServer mbs_missing = new MBeanServerWithVersion(POISON_PILL);
+            String version_missing =
+                    JMX.getSpecificationVersion(mbs_missing, null);
+            fail("JMX.getSpecificationVersion succeeded with null version" +
+                    " (returned " + version_missing + ")");
+        } catch (Exception e) {
+            assertEquals("Exception for missing version",
+                    IOException.class, e.getClass());
+        }
+
+        ObjectName wildcardNamespaceName = new ObjectName("foo//*//bar//baz:k=v");
+        try {
+            String brokenVersion =
+                    JMX.getSpecificationVersion(mbsc, wildcardNamespaceName);
+            fail("JMX.getSpecificationVersion succeeded with wildcard namespace" +
+                    " (returned " + brokenVersion + ")");
+        } catch (Exception e) {
+            assertEquals("Exception for wildcard namespace",
+                    IllegalArgumentException.class, e.getClass());
+        }
+
+        String sub1_2namespace = "blibby";
+        JMXNamespace sub1_2 = new JMXNamespace(mbs1_2);
+        ObjectName sub1_2name =
+                JMXNamespaces.getNamespaceObjectName(sub1_2namespace);
+        mbs.registerMBean(sub1_2, sub1_2name);
+        String sub1_2namespaceHandlerVersion =
+                JMX.getSpecificationVersion(mbs, sub1_2name);
+        assertEquals("Spec version of namespace handler",
+                realVersion, sub1_2namespaceHandlerVersion);
+        // The namespace handler is in the top-level namespace so its
+        // version should not be 1.2.
+
+        for (String nameInSub : new String[] {"*:*", "d:k=v"}) {
+            ObjectName subName = new ObjectName(sub1_2namespace + "//" + nameInSub);
+            String subVersion = JMX.getSpecificationVersion(mbs, subName);
+            assertEquals("Spec version in 1.2 namespace (" + nameInSub + ")",
+                    "1.2", subVersion);
+        }
+
+        mbs.unregisterMBean(sub1_2name);
+        for (String noSuchNamespace : new String[] {
+            sub1_2namespace + "//*:*", sub1_2namespace + "//d:k=v",
+        }) {
+            try {
+                String brokenVersion = JMX.getSpecificationVersion(
+                        mbs, new ObjectName(noSuchNamespace));
+                fail("JMX.getSpecificationVersion succeeded with missing " +
+                        "namespace (" + noSuchNamespace + " -> " +
+                        brokenVersion);
+            } catch (Exception e) {
+                assertEquals("Exception for missing namespace",
+                        IOException.class, e.getClass());
+            }
+        }
+
+        if (failure != null)
+            throw new Exception("TEST FAILED: " + failure);
+        System.out.println("TEST PASSED");
+    }
+
+    private static void assertEquals(String what, Object expect, Object actual) {
+        if (equal(expect, actual))
+            System.out.println("OK: " + what + ": " + expect);
+        else
+            fail(what + ": expected " + expect + ", got " + actual);
+    }
+
+    private static  boolean equal(Object x, Object y) {
+        if (x == null)
+            return (y == null);
+        else
+            return x.equals(y);
+    }
+
+    private static void fail(String why) {
+        System.out.println("FAILED: " + why);
+        failure = why;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/standardmbean/FindMethodTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,384 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6287328
+ * @summary Add methods to StandardMBean to retrieve a method based on
+ * MBean{Attribute|Operation}Info
+ * @author Jean-Francois Denise
+ * @run main FindMethodTest
+ */
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
+import java.lang.management.ThreadMXBean;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import javax.management.MBean;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
+import javax.management.MBeanServer;
+import javax.management.ManagedAttribute;
+import javax.management.ManagedOperation;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+
+public class FindMethodTest {
+
+    private static MBeanServer server =
+            ManagementFactory.getPlatformMBeanServer();
+
+    private static Map<String, Set<Method>> expectedMapping =
+            new HashMap<String, Set<Method>>();
+    private static Set<Method> STATE_SET = new HashSet<Method>();
+    private static Set<Method> ENABLED_SET = new HashSet<Method>();
+    private static Set<Method> DOIT_SET = new HashSet<Method>();
+    private static Set<Method> STATUS_SET = new HashSet<Method>();
+    private static Set<Method> HEAPMEMORYUSAGE_SET = new HashSet<Method>();
+    private static Set<Method> THREADINFO_SET = new HashSet<Method>();
+    private static Set<Method> DOIT_ANNOTATED_SET = new HashSet<Method>();
+    private static Set<Method> IT_ANNOTATED_SET = new HashSet<Method>();
+    private static HashSet<Set<Method>> TEST_MBEAN_SET =
+            new HashSet<Set<Method>>();
+    private static HashSet<Set<Method>> ANNOTATED_MBEAN_SET =
+            new HashSet<Set<Method>>();
+    private static HashSet<Set<Method>> MEMORY_MBEAN_SET =
+            new HashSet<Set<Method>>();
+    private static HashSet<Set<Method>> THREAD_MBEAN_SET =
+            new HashSet<Set<Method>>();
+
+    public interface TestMBean {
+
+        public void doIt();
+
+        public void setState(String str);
+
+        public String getState();
+
+        public boolean isEnabled();
+
+        public void setStatus(int i);
+    }
+
+    public interface FaultyTestMBean {
+
+        public void doIt(String doIt);
+
+        public long getState();
+
+        public void setEnabled(boolean b);
+
+        public int getStatus();
+
+        public String setWrong(int i);
+    }
+
+    @MBean
+    public static class AnnotatedTest {
+        @ManagedOperation
+        public void doItAnnotated() {
+
+        }
+
+        public void dontDoIt() {
+
+        }
+
+        @ManagedAttribute
+        public String getItAnnotated() {
+            return null;
+        }
+        @ManagedAttribute
+        public void setItAnnotated(String str) {
+
+        }
+
+        public String getItNot() {
+            return null;
+        }
+
+    }
+
+    static class Test implements TestMBean {
+
+        public void doIt() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void setState(String str) {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public String getState() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public boolean isEnabled() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+        public void setStatus(int i) {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+    }
+
+
+    static {
+        try {
+            ENABLED_SET.add(TestMBean.class.getDeclaredMethod("isEnabled"));
+
+            STATE_SET.add(TestMBean.class.getDeclaredMethod("getState"));
+            STATE_SET.add(TestMBean.class.getDeclaredMethod("setState",
+                    String.class));
+            STATUS_SET.add(TestMBean.class.getDeclaredMethod("setStatus",
+                    int.class));
+
+            DOIT_SET.add(TestMBean.class.getDeclaredMethod("doIt"));
+
+            DOIT_ANNOTATED_SET.add(AnnotatedTest.class.getDeclaredMethod("doItAnnotated"));
+
+            IT_ANNOTATED_SET.add(AnnotatedTest.class.getDeclaredMethod("getItAnnotated"));
+            IT_ANNOTATED_SET.add(AnnotatedTest.class.getDeclaredMethod("setItAnnotated", String.class));
+
+            THREADINFO_SET.add(ThreadMXBean.class.getDeclaredMethod("dumpAllThreads", boolean.class,
+                    boolean.class));
+
+            HEAPMEMORYUSAGE_SET.add(MemoryMXBean.class.getDeclaredMethod("getHeapMemoryUsage"));
+
+            TEST_MBEAN_SET.add(ENABLED_SET);
+            TEST_MBEAN_SET.add(STATE_SET);
+            TEST_MBEAN_SET.add(STATUS_SET);
+            TEST_MBEAN_SET.add(DOIT_SET);
+
+            ANNOTATED_MBEAN_SET.add(DOIT_ANNOTATED_SET);
+            ANNOTATED_MBEAN_SET.add(IT_ANNOTATED_SET);
+
+            MEMORY_MBEAN_SET.add(HEAPMEMORYUSAGE_SET);
+
+            THREAD_MBEAN_SET.add(THREADINFO_SET);
+
+            expectedMapping.put("State", STATE_SET);
+            expectedMapping.put("Enabled", ENABLED_SET);
+            expectedMapping.put("Status", STATUS_SET);
+            expectedMapping.put("doIt", DOIT_SET);
+            expectedMapping.put("HeapMemoryUsage", HEAPMEMORYUSAGE_SET);
+            expectedMapping.put("dumpAllThreads", THREADINFO_SET);
+            expectedMapping.put("doItAnnotated", DOIT_ANNOTATED_SET);
+            expectedMapping.put("ItAnnotated", IT_ANNOTATED_SET);
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            throw new RuntimeException("Initialization failed");
+        }
+    }
+
+    private static void testMBean(ObjectName name, Class<?> itf,
+            HashSet<Set<Method>> expectMappings)
+            throws Exception {
+
+        Set<Set<Method>> expectedMappings =
+                (Set<Set<Method>>) expectMappings.clone();
+
+        MBeanInfo info = server.getMBeanInfo(name);
+        for (MBeanAttributeInfo attr : info.getAttributes()) {
+            Set<Method> expected = expectedMapping.get(attr.getName());
+            if (expected == null) {
+                continue;
+            }
+            if (!expectedMappings.remove(expected)) {
+                throw new Exception("The mapping to use is not the expected " +
+                        "one for " + attr);
+            }
+            System.out.println("Expected : " + expected);
+            Set<Method> found =
+                    StandardMBean.findAttributeAccessors(itf, attr);
+            System.out.println("Found : " + found);
+            if (!found.equals(expected)) {
+                throw new Exception("Mapping error.");
+            }
+        }
+        for (MBeanOperationInfo op : info.getOperations()) {
+            Set<Method> expected = expectedMapping.get(op.getName());
+            if (expected == null) {
+                continue;
+            }
+            if (!expectedMappings.remove(expected)) {
+                throw new Exception("The mapping to use is not the expected " +
+                        "one for " + op);
+            }
+            System.out.println("Expected : " + expected);
+            Method method =
+                    StandardMBean.findOperationMethod(itf, op);
+            Set<Method> found = new HashSet<Method>();
+            found.add(method);
+            System.out.println("Found : " + found);
+            if (!found.equals(expected)) {
+                throw new Exception("Mapping error.");
+            }
+        }
+
+        if (expectedMappings.size() != 0) {
+            throw new Exception("Some mapping have not been found " +
+                    expectedMappings);
+        } else {
+            System.out.println("All mappings have been found");
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        // Positive tests
+        Test t = new Test();
+        ObjectName name = ObjectName.valueOf(":type=Test");
+        server.registerMBean(t, name);
+        AnnotatedTest at = new AnnotatedTest();
+        ObjectName annotatedName = ObjectName.valueOf(":type=AnnotatedTest");
+        server.registerMBean(at, annotatedName);
+
+        testMBean(name, TestMBean.class, TEST_MBEAN_SET);
+
+        testMBean(annotatedName, AnnotatedTest.class, ANNOTATED_MBEAN_SET);
+
+        ObjectName memoryName =
+                ObjectName.valueOf(ManagementFactory.MEMORY_MXBEAN_NAME);
+        testMBean(memoryName, MemoryMXBean.class, MEMORY_MBEAN_SET);
+
+        ObjectName threadName =
+                ObjectName.valueOf(ManagementFactory.THREAD_MXBEAN_NAME);
+        testMBean(threadName, ThreadMXBean.class, THREAD_MBEAN_SET);
+
+        // Negative tests
+        try {
+            StandardMBean.findOperationMethod(null,
+                    new MBeanOperationInfo("Test",
+                    TestMBean.class.getDeclaredMethod("doIt")));
+            throw new Exception("Expected exception not found");
+        } catch (IllegalArgumentException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        try {
+            StandardMBean.findOperationMethod(TestMBean.class, null);
+            throw new Exception("Expected exception not found");
+        } catch (IllegalArgumentException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        try {
+            StandardMBean.findAttributeAccessors(null,
+                    new MBeanAttributeInfo("Test", "Test",
+                    TestMBean.class.getDeclaredMethod("getState"),
+                    TestMBean.class.getDeclaredMethod("setState",
+                    String.class)));
+            throw new Exception("Expected exception not found");
+        } catch (IllegalArgumentException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        try {
+            StandardMBean.findAttributeAccessors(TestMBean.class, null);
+            throw new Exception("Expected exception not found");
+        } catch (IllegalArgumentException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        //Wrong operation signature
+        try {
+            StandardMBean.findOperationMethod(TestMBean.class,
+                    new MBeanOperationInfo("FaultyTest",
+                    FaultyTestMBean.class.getDeclaredMethod("doIt",
+                    String.class)));
+            throw new Exception("Expected exception not found");
+        } catch (NoSuchMethodException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        //Wrong attribute accessor
+        try {
+            StandardMBean.findAttributeAccessors(TestMBean.class,
+                    new MBeanAttributeInfo("FaultyTest", "FaultyTest", null,
+                    FaultyTestMBean.class.getDeclaredMethod("setEnabled",
+                    String.class)));
+            throw new Exception("Expected exception not found");
+        } catch (NoSuchMethodException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        //Wrong attribute type
+        try {
+            StandardMBean.findAttributeAccessors(TestMBean.class,
+                    new MBeanAttributeInfo("State", "toto.FaultType",
+                    "FaultyTest", true, true, false));
+            throw new Exception("Expected exception not found");
+        } catch (ClassNotFoundException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        //Wrong operation parameter type
+        try {
+            MBeanParameterInfo[] p = {new MBeanParameterInfo("p1",
+                "toto.FaultType2", "FaultyParameter")
+            };
+            StandardMBean.findOperationMethod(TestMBean.class,
+                    new MBeanOperationInfo("doIt", "FaultyMethod", p, "void",
+                    0));
+            throw new Exception("Expected exception not found");
+        } catch (ClassNotFoundException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        // Check that not annotated attributes are not found
+        try {
+            StandardMBean.findAttributeAccessors(AnnotatedTest.class,
+                    new MBeanAttributeInfo("ItNot", String.class.getName(),
+                    "FaultyTest", true, false, false));
+            throw new Exception("Expected exception not found");
+        } catch (NoSuchMethodException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        // Check that not annotated operations are not found
+        try {
+            StandardMBean.findOperationMethod(AnnotatedTest.class,
+                    new MBeanOperationInfo("dontDoIt","dontDoIt",null,
+                    Void.TYPE.getName(),0));
+            throw new Exception("Expected exception not found");
+        } catch (NoSuchMethodException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+        // Check that wrong getter return type throws Exception
+        try {
+            StandardMBean.findAttributeAccessors(AnnotatedTest.class,
+                    new MBeanAttributeInfo("ItAnnotated", Long.class.getName(),
+                    "FaultyTest", true, false, false));
+            throw new Exception("Expected exception not found");
+        } catch (NoSuchMethodException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+         // Check that wrong setter return type throws Exception
+        try {
+            StandardMBean.findAttributeAccessors(FaultyTestMBean.class,
+                    new MBeanAttributeInfo("Wrong", String.class.getName(),
+                    "FaultyTest", true, true, false));
+            throw new Exception("Expected exception not found");
+        } catch (NoSuchMethodException ex) {
+            System.out.println("OK received expected exception " + ex);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/standardmbean/RegistrationTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6450834
+ * @summary Forward MBeanRegistration calls
+ * @author JF Denise
+ * @run main RegistrationTest
+ */
+
+import java.io.Serializable;
+import java.lang.management.ManagementFactory;
+import javax.management.*;
+
+public class RegistrationTest {
+    static boolean preRegisterCalled;
+    static boolean postRegisterCalled;
+    static boolean preDeregisterCalled;
+    static boolean postDeregisterCalled;
+
+    static void checkResult(boolean expected) throws Exception {
+        if((preRegisterCalled != expected ||
+            postRegisterCalled != expected ||
+            preDeregisterCalled != expected ||
+            postDeregisterCalled != expected))
+            throw new Exception("Mismatch preRegisterCalled = "
+                    + preRegisterCalled + ", postRegisterCalled = "
+                    + postRegisterCalled + ", preDeregisterCalled = "
+                    + preDeregisterCalled + ", postDeregisterCalled = "
+                    + postDeregisterCalled);
+    }
+    static class Wrapped implements MBeanRegistration,Serializable {
+
+        public ObjectName preRegister(MBeanServer server, ObjectName name)
+                throws Exception {
+            preRegisterCalled = true;
+            return name;
+        }
+
+        public void postRegister(Boolean registrationDone) {
+            postRegisterCalled = true;
+        }
+
+        public void preDeregister() throws Exception {
+            preDeregisterCalled = true;
+        }
+
+        public void postDeregister() {
+            postDeregisterCalled = true;
+        }
+
+    }
+
+    public static void main(String[] args) throws Exception {
+       StandardMBean std = new StandardMBean(new Wrapped(),
+               Serializable.class);
+       ObjectName name = ObjectName.valueOf(":type=Test");
+       ManagementFactory.getPlatformMBeanServer().registerMBean(std,name);
+       ManagementFactory.getPlatformMBeanServer().unregisterMBean(name);
+       checkResult(false);
+       StandardMBean.Options opt = new StandardMBean.Options();
+       opt.setMBeanRegistrationForwarded(true);
+       std = new StandardMBean(new Wrapped(),
+               Serializable.class, opt );
+       ManagementFactory.getPlatformMBeanServer().registerMBean(std,name);
+       ManagementFactory.getPlatformMBeanServer().unregisterMBean(name);
+       checkResult(true);
+       System.out.println("Test OK");
+    }
+}
--- a/test/javax/swing/RepaintManager/6608456/bug6608456.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/swing/RepaintManager/6608456/bug6608456.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc.  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
--- a/test/javax/swing/text/html/HRuleView/Test5062055.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/swing/text/html/HRuleView/Test5062055.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc.  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
--- a/test/javax/xml/crypto/dsig/GenerationTests.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/javax/xml/crypto/dsig/GenerationTests.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  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
--- a/test/lib/security/cacerts/VerifyCACerts.java	Thu Jan 29 13:19:34 2009 +0300
+++ b/test/lib/security/cacerts/VerifyCACerts.java	Thu Jan 29 18:33:52 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,12 @@
 
 /**
  * @test
- * @bug 4400624 6321453
+ * @bug 4400624 6321453 6728890 6732157 6754779 6768559
  * @summary Make sure all self-signed root cert signatures are valid
  */
 import java.io.FileInputStream;
 import java.security.KeyStore;
+import java.security.MessageDigest;
 import java.security.cert.*;
 import java.util.*;
 
@@ -39,25 +40,102 @@
         System.getProperty("file.separator") + "security" +
         System.getProperty("file.separator") + "cacerts";
 
+    private static boolean atLeastOneFailed = false;
+
+    private static MessageDigest md;
+
+    // map of cert alias to SHA1 fingerprint
+    private static Map<String, String> fpMap = new HashMap<String, String>();
+
+    private static String[][] entries = {
+        { "swisssignsilverg2ca", "9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB"},
+        { "swisssigngoldg2ca", "D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61"},
+        { "swisssignplatinumg2ca", "56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66"},
+        { "verisigntsaca", "BE:36:A4:56:2F:B2:EE:05:DB:B3:D3:23:23:AD:F4:45:08:4E:D6:56"},
+        { "camerfirmachambersignca", "4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0C"},
+        { "camerfirmachambersca", "78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C"},
+        { "camerfirmachamberscommerceca", "6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1"},
+        { "deutschetelekomrootca2", "85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BF"},
+    };
+
+    static {
+        for (String[] entry : entries) {
+            fpMap.put(entry[0], entry[1]);
+        }
+    };
+
     public static void main(String[] args) throws Exception {
+        md = MessageDigest.getInstance("SHA1");
+        KeyStore ks = KeyStore.getInstance("JKS");
+        ks.load(new FileInputStream(cacertsFileName), "changeit".toCharArray());
 
+        // check that all entries in the map are in the keystore
+        for (String alias : fpMap.keySet()) {
+            if (!ks.isCertificateEntry(alias)) {
+                atLeastOneFailed = true;
+                System.err.println(alias + " is not in cacerts");
+            }
+        }
         // pull all the trusted self-signed CA certs out of the cacerts file
         // and verify their signatures
-        KeyStore ks = KeyStore.getInstance("JKS");
-        ks.load(new FileInputStream(cacertsFileName), "changeit".toCharArray());
         Enumeration<String> aliases = ks.aliases();
         while (aliases.hasMoreElements()) {
             String alias = aliases.nextElement();
             System.out.println("Verifying " + alias);
-            if (!ks.isCertificateEntry(alias))
-                throw new Exception(alias + " is not a trusted cert entry");
+            if (!ks.isCertificateEntry(alias)) {
+                atLeastOneFailed = true;
+                System.err.println(alias + " is not a trusted cert entry");
+            }
             Certificate cert = ks.getCertificate(alias);
             // remember the GTE CyberTrust CA cert for further tests
             if (alias.equals("gtecybertrustca")) {
-                throw new Exception
+                atLeastOneFailed = true;
+                System.err.println
                     ("gtecybertrustca is expired and should be deleted");
             }
             cert.verify(cert.getPublicKey());
+            if (!checkFingerprint(alias, cert)) {
+                atLeastOneFailed = true;
+                System.err.println
+                    (alias + " SHA1 fingerprint is incorrect");
+            }
+        }
+
+        if (atLeastOneFailed) {
+            throw new Exception("At least one cacert test failed");
         }
     }
+
+    private static boolean checkFingerprint(String alias, Certificate cert)
+        throws Exception {
+        String fingerprint = fpMap.get(alias);
+        if (fingerprint == null) {
+            // no entry for alias
+            return true;
+        }
+        System.out.println("Checking fingerprint of " + alias);
+        byte[] digest = md.digest(cert.getEncoded());
+        return fingerprint.equals(toHexString(digest));
+    }
+
+    private static String toHexString(byte[] block) {
+        StringBuffer buf = new StringBuffer();
+        int len = block.length;
+        for (int i = 0; i < len; i++) {
+             byte2hex(block[i], buf);
+             if (i < len-1) {
+                 buf.append(":");
+             }
+        }
+        return buf.toString();
+    }
+
+    private static void byte2hex(byte b, StringBuffer buf) {
+        char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
+                            '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+        int high = ((b & 0xf0) >> 4);
+        int low = (b & 0x0f);
+        buf.append(hexChars[high]);
+        buf.append(hexChars[low]);
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/jvmstat/monitor/MonitoredVm/CR6672135.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.net.URISyntaxException;
+import java.util.Set;
+import sun.jvmstat.monitor.MonitorException;
+import sun.jvmstat.monitor.MonitoredHost;
+import sun.jvmstat.monitor.MonitoredVm;
+import sun.jvmstat.monitor.VmIdentifier;
+
+/**
+ *
+ * @test
+ * @bug 6672135
+ * @summary setInterval() for local MonitoredHost and local MonitoredVm
+ * @author Tomas Hurka
+ */
+public class CR6672135 {
+
+    private static final int INTERVAL = 2000;
+
+    public static void main(String[] args) {
+        int vmInterval;
+        int hostInterval;
+
+        try {
+            MonitoredHost localHost = MonitoredHost.getMonitoredHost("localhost");
+            Set vms = localHost.activeVms();
+            Integer vmInt =  (Integer) vms.iterator().next();
+            String uriString = "//" + vmInt + "?mode=r"; // NOI18N
+            VmIdentifier vmId = new VmIdentifier(uriString);
+            MonitoredVm vm = localHost.getMonitoredVm(vmId);
+
+            vm.setInterval(INTERVAL);
+            localHost.setInterval(INTERVAL);
+            vmInterval = vm.getInterval();
+            hostInterval = localHost.getInterval();
+        } catch (Exception ex) {
+            throw new Error ("Test failed",ex);
+        }
+        System.out.println("VM "+vmInterval);
+        if (vmInterval != INTERVAL) {
+            throw new Error("Test failed");
+        }
+        System.out.println("Host "+hostInterval);
+        if (hostInterval != INTERVAL) {
+            throw new Error("Test failed");
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ *  @test LocalRMIServerSocketFactoryTest.java
+ *  @bug 6774170
+ *  @summary Connect to a server socket returned by the LocalRMIServerSocketFactory.
+ *
+ *  @author Daniel Fuchs
+ *
+ *  @run compile -XDignore.symbol.file=true -source 1.6 -g LocalRMIServerSocketFactoryTest.java
+ *  @run main LocalRMIServerSocketFactoryTest
+ */
+
+import sun.management.jmxremote.LocalRMIServerSocketFactory;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.concurrent.SynchronousQueue;
+
+public class LocalRMIServerSocketFactoryTest {
+
+    private static final SynchronousQueue<Exception> queue =
+            new SynchronousQueue<Exception>();
+
+    static final class Result extends Exception {
+
+        private Result() {
+            super("SUCCESS: No exception was thrown");
+        }
+        static final Result SUCCESS = new Result();
+    }
+
+    private static void checkError(String message) throws Exception {
+
+        // Wait for the server to set the error field.
+        final Exception x = queue.take();
+
+        if (x == Result.SUCCESS) {
+            return;
+        }
+
+
+        // case of 6674166: this is very unlikely to happen, even if
+        //     both 6674166 and 6774170 aren't fixed. If it happens
+        //     however, it might indicate that neither defects are fixed.
+
+        if (x instanceof NullPointerException) {
+            throw new Exception(message + " - " +
+                    "Congratulations! it seems you have triggered 6674166. " +
+                    "Neither 6674166 nor 6774170 seem to be fixed: " + x, x);
+        } else if (x instanceof IOException) {
+            throw new Exception(message + " - " +
+                    "Unexpected IOException. Maybe you triggered 6674166? " +
+                    x, x);
+        } else if (x != null) {
+            throw new Exception(message + " - " +
+                    "Ouch, that's bad. " +
+                    "This is a new kind of unexpected exception " +
+                    x, x);
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        final LocalRMIServerSocketFactory f =
+                new LocalRMIServerSocketFactory();
+        final ServerSocket s = f.createServerSocket(0);
+        final int port = s.getLocalPort();
+        Thread t = new Thread() {
+
+            public void run() {
+                while (true) {
+                    Exception error = Result.SUCCESS;
+                    try {
+                        System.err.println("Accepting: ");
+                        final Socket ss = s.accept();
+                        System.err.println(ss.getInetAddress() + " accepted");
+                    } catch (Exception x) {
+                        x.printStackTrace();
+                        error = x;
+                    } finally {
+                        try {
+                            // wait for the client to get the exception.
+                            queue.put(error);
+                        } catch (Exception x) {
+                            // too bad!
+                            System.err.println("Could't send result to client!");
+                            x.printStackTrace();
+                            return;
+                        }
+                    }
+                }
+            }
+        };
+        t.setDaemon(true);
+        t.start();
+
+        System.err.println("new Socket((String)null, port)");
+        final Socket s1 = new Socket((String) null, port);
+        checkError("new Socket((String)null, port)");
+        s1.close();
+        System.err.println("new Socket((String)null, port): PASSED");
+
+        System.err.println("new Socket(InetAddress.getByName(null), port)");
+        final Socket s2 = new Socket(InetAddress.getByName(null), port);
+        checkError("new Socket(InetAddress.getByName(null), port)");
+        s2.close();
+        System.err.println("new Socket(InetAddress.getByName(null), port): PASSED");
+
+        System.err.println("new Socket(localhost, port)");
+        final Socket s3 = new Socket("localhost", port);
+        checkError("new Socket(localhost, port)");
+        s3.close();
+        System.err.println("new Socket(localhost, port): PASSED");
+
+        System.err.println("new Socket(127.0.0.1, port)");
+        final Socket s4 = new Socket("127.0.0.1", port);
+        checkError("new Socket(127.0.0.1, port)");
+        s4.close();
+        System.err.println("new Socket(127.0.0.1, port): PASSED");
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/Action.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * Action used in Context.doAs
+ */
+public interface Action {
+    /**
+     * This method always reads a byte block and emits another one
+     */
+    byte[] run(Context s, byte[] input) throws Exception;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/BasicKrb5Test.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6706974
+ * @summary Add krb5 test infrastructure
+ */
+
+import org.ietf.jgss.GSSName;
+import sun.security.jgss.GSSUtil;
+import sun.security.krb5.Config;
+import sun.security.krb5.internal.crypto.EType;
+
+/**
+ * Basic JGSS/krb5 test with 3 parties: client, server, backend server. Each
+ * party uses JAAS login to get subjects and executes JGSS calls using
+ * Subject.doAs.
+ */
+public class BasicKrb5Test {
+
+    /**
+     * @param args empty or etype
+     */
+    public static void main(String[] args)
+            throws Exception {
+
+        String etype = null;
+        if (args.length > 0) {
+            etype = args[0];
+        }
+
+        // Creates and starts the KDC. This line must be put ahead of etype check
+        // since the check needs a krb5.conf.
+        new OneKDC(etype).writeJAASConf();
+
+        System.out.println("Testing etype " + etype);
+        if (etype != null && !EType.isSupported(Config.getInstance().getType(etype))) {
+            System.out.println("Not supported.");
+            System.exit(0);
+        }
+
+        new BasicKrb5Test().go(OneKDC.SERVER, OneKDC.BACKEND);
+    }
+
+    void go(final String server, final String backend) throws Exception {
+        Context c, s, s2, b;
+        c = Context.fromJAAS("client");
+        s = Context.fromJAAS("server");
+        b = Context.fromJAAS("backend");
+
+        c.startAsClient(server, GSSUtil.GSS_KRB5_MECH_OID);
+        c.x().requestCredDeleg(true);
+        s.startAsServer(GSSUtil.GSS_KRB5_MECH_OID);
+
+        c.status();
+        s.status();
+
+        Context.handshake(c, s);
+        GSSName client = c.x().getSrcName();
+
+        c.status();
+        s.status();
+
+        Context.transmit("i say high --", c, s);
+        Context.transmit("   you say low", s, c);
+
+        s2 = s.delegated();
+        s.dispose();
+        s = null;
+
+        s2.startAsClient(backend, GSSUtil.GSS_KRB5_MECH_OID);
+        b.startAsServer(GSSUtil.GSS_KRB5_MECH_OID);
+
+        s2.status();
+        b.status();
+
+        Context.handshake(s2, b);
+        GSSName client2 = b.x().getSrcName();
+
+        if (!client.equals(client2)) {
+            throw new Exception("Delegation failed");
+        }
+
+        s2.status();
+        b.status();
+
+        Context.transmit("you say hello --", s2, b);
+        Context.transmit("   i say goodbye", b, s2);
+
+        s2.dispose();
+        b.dispose();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/CleanState.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6716534
+ * @summary Krb5LoginModule has not cleaned temp info between authentication attempts
+ */
+import com.sun.security.auth.module.Krb5LoginModule;
+import java.util.HashMap;
+import java.util.Map;
+import javax.security.auth.Subject;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+
+public class CleanState {
+    public static void main(String[] args) throws Exception {
+        CleanState x = new CleanState();
+        new OneKDC(null);
+        x.go();
+    }
+
+    void go() throws Exception {
+        Krb5LoginModule krb5 = new Krb5LoginModule();
+
+        final String name = OneKDC.USER;
+        final char[] password = OneKDC.PASS;
+        char[] badpassword = "hellokitty".toCharArray();
+
+        Map<String,String> map = new HashMap<String,String>();
+        map.put("useTicketCache", "false");
+        map.put("doNotPrompt", "false");
+        map.put("tryFirstPass", "true");
+        Map<String,Object> shared = new HashMap<String,Object>();
+        shared.put("javax.security.auth.login.name", name);
+        shared.put("javax.security.auth.login.password", badpassword);
+
+        krb5.initialize(new Subject(), new CallbackHandler() {
+            @Override
+            public void handle(Callback[] callbacks) {
+                for(Callback callback: callbacks) {
+                    if (callback instanceof NameCallback) {
+                        ((NameCallback)callback).setName(name);
+                    }
+                    if (callback instanceof PasswordCallback) {
+                        ((PasswordCallback)callback).setPassword(password);
+                    }
+                }
+            }
+        }, shared, map);
+        krb5.login();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/Context.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,403 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import com.sun.security.auth.module.Krb5LoginModule;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import javax.security.auth.Subject;
+import javax.security.auth.kerberos.KerberosKey;
+import javax.security.auth.kerberos.KerberosTicket;
+import javax.security.auth.login.LoginContext;
+import org.ietf.jgss.GSSContext;
+import org.ietf.jgss.GSSCredential;
+import org.ietf.jgss.GSSException;
+import org.ietf.jgss.GSSManager;
+import org.ietf.jgss.GSSName;
+import org.ietf.jgss.MessageProp;
+import org.ietf.jgss.Oid;
+
+/**
+ * Context of a JGSS subject, encapsulating Subject and GSSContext.
+ *
+ * Three "constructors", which acquire the (private) credentials and fill
+ * it into the Subject:
+ *
+ * 1. static fromJAAS(): Creates a Context using a JAAS login config entry
+ * 2. static fromUserPass(): Creates a Context using a username and a password
+ * 3. delegated(): A new context which uses the delegated credentials from a
+ *    previously established acceptor Context
+ *
+ * Two context initiators, which create the GSSContext object inside:
+ *
+ * 1. startAsClient()
+ * 2. startAsServer()
+ *
+ * Privileged action:
+ *    doAs(): Performs an action in the name of the Subject
+ *
+ * Handshake process:
+ *    static handShake(initiator, acceptor)
+ *
+ * A four-phase typical data communication which includes all four GSS
+ * actions (wrap, unwrap, getMic and veryfyMiC):
+ *    static transmit(message, from, to)
+ */
+public class Context {
+
+    private Subject s;
+    private GSSContext x;
+    private boolean f;      // context established?
+    private String name;
+    private GSSCredential cred;     // see static method delegated().
+
+    private Context() {}
+
+    /**
+     * Using the delegated credentials from a previous acceptor
+     * @param c
+     */
+    public Context delegated() throws Exception {
+        Context out = new Context();
+        out.s = s;
+        out.cred = x.getDelegCred();
+        out.name = name + " as " + out.cred.getName().toString();
+        return out;
+    }
+
+    /**
+     * Logins with a JAAS login config entry name
+     */
+    public static Context fromJAAS(final String name) throws Exception {
+        Context out = new Context();
+        out.name = name;
+        LoginContext lc = new LoginContext(name);
+        lc.login();
+        out.s = lc.getSubject();
+        return out;
+    }
+
+    /**
+     * Logins with a username and a password, using Krb5LoginModule directly
+     * @param storeKey true if key should be saved, used on acceptor side
+     */
+    public static Context fromUserPass(String user, char[] pass, boolean storeKey) throws Exception {
+        Context out = new Context();
+        out.name = user;
+        out.s = new Subject();
+        Krb5LoginModule krb5 = new Krb5LoginModule();
+        Map<String, String> map = new HashMap<String, String>();
+        Map<String, Object> shared = new HashMap<String, Object>();
+
+        if (pass != null) {
+            map.put("useFirstPass", "true");
+            shared.put("javax.security.auth.login.name", user);
+            shared.put("javax.security.auth.login.password", pass);
+        } else {
+            map.put("doNotPrompt", "true");
+            map.put("useTicketCache", "true");
+            if (user != null) {
+                map.put("principal", user);
+            }
+        }
+        if (storeKey) {
+            map.put("storeKey", "true");
+        }
+
+        krb5.initialize(out.s, null, shared, map);
+        krb5.login();
+        krb5.commit();
+        return out;
+    }
+
+    /**
+     * Starts as a client
+     * @param target communication peer
+     * @param mech GSS mech
+     * @throws java.lang.Exception
+     */
+    public void startAsClient(final String target, final Oid mech) throws Exception {
+        doAs(new Action() {
+            @Override
+            public byte[] run(Context me, byte[] dummy) throws Exception {
+                GSSManager m = GSSManager.getInstance();
+                me.x = m.createContext(
+                        target.indexOf('@') < 0 ?
+                            m.createName(target, null) :
+                            m.createName(target, GSSName.NT_HOSTBASED_SERVICE),
+                        mech,
+                        cred,
+                        GSSContext.DEFAULT_LIFETIME);
+                return null;
+            }
+        }, null);
+        f = false;
+    }
+
+    /**
+     * Starts as a server
+     * @param mech GSS mech
+     * @throws java.lang.Exception
+     */
+    public void startAsServer(final Oid mech) throws Exception {
+        doAs(new Action() {
+            @Override
+            public byte[] run(Context me, byte[] dummy) throws Exception {
+                GSSManager m = GSSManager.getInstance();
+                me.x = m.createContext(m.createCredential(
+                        null,
+                        GSSCredential.INDEFINITE_LIFETIME,
+                        mech,
+                        GSSCredential.ACCEPT_ONLY));
+                return null;
+            }
+        }, null);
+        f = false;
+    }
+
+    /**
+     * Accesses the internal GSSContext object. Currently it's used for --
+     *
+     * 1. calling requestXXX() before handshake
+     * 2. accessing source name
+     *
+     * Note: If the application needs to do any privileged call on this
+     * object, please use doAs(). Otherwise, it can be done directly. The
+     * methods listed above are all non-privileged calls.
+     *
+     * @return the GSSContext object
+     */
+    public GSSContext x() {
+        return x;
+    }
+
+    /**
+     * Disposes the GSSContext within
+     * @throws org.ietf.jgss.GSSException
+     */
+    public void dispose() throws GSSException {
+        x.dispose();
+    }
+
+    /**
+     * Does something using the Subject inside
+     * @param action the action
+     * @param in the input byte
+     * @return the output byte
+     * @throws java.lang.Exception
+     */
+    public byte[] doAs(final Action action, final byte[] in) throws Exception {
+        try {
+            return Subject.doAs(s, new PrivilegedExceptionAction<byte[]>() {
+
+                @Override
+                public byte[] run() throws Exception {
+                    return action.run(Context.this, in);
+                }
+            });
+        } catch (PrivilegedActionException pae) {
+            throw pae.getException();
+        }
+    }
+
+    /**
+     * Prints status of GSSContext and Subject
+     * @throws java.lang.Exception
+     */
+    public void status() throws Exception {
+        System.out.println("STATUS OF " + name.toUpperCase());
+        try {
+            StringBuffer sb = new StringBuffer();
+            if (x.getAnonymityState()) {
+                sb.append("anon, ");
+            }
+            if (x.getConfState()) {
+                sb.append("conf, ");
+            }
+            if (x.getCredDelegState()) {
+                sb.append("deleg, ");
+            }
+            if (x.getIntegState()) {
+                sb.append("integ, ");
+            }
+            if (x.getMutualAuthState()) {
+                sb.append("mutual, ");
+            }
+            if (x.getReplayDetState()) {
+                sb.append("rep det, ");
+            }
+            if (x.getSequenceDetState()) {
+                sb.append("seq det, ");
+            }
+            System.out.println("Context status of " + name + ": " + sb.toString());
+            System.out.println(x.getSrcName() + " -> " + x.getTargName());
+        } catch (Exception e) {
+            ;// Don't care
+        }
+        System.out.println("=====================================");
+        for (Object o : s.getPrivateCredentials()) {
+            System.out.println("    " + o.getClass());
+            if (o instanceof KerberosTicket) {
+                KerberosTicket kt = (KerberosTicket) o;
+                System.out.println("        " + kt.getServer() + " for " + kt.getClient());
+            } else if (o instanceof KerberosKey) {
+                KerberosKey kk = (KerberosKey) o;
+                System.out.print("        " + kk.getKeyType() + " " + kk.getVersionNumber() + " " + kk.getAlgorithm() + " ");
+                for (byte b : kk.getEncoded()) {
+                    System.out.printf("%02X", b & 0xff);
+                }
+                System.out.println();
+            } else if (o instanceof Map) {
+                Map map = (Map) o;
+                for (Object k : map.keySet()) {
+                    System.out.println("        " + k + ": " + map.get(k));
+                }
+            }
+        }
+    }
+
+    /**
+     * Transmits a message from one Context to another. The sender wraps the
+     * message and sends it to the receiver. The receiver unwraps it, creates
+     * a MIC of the clear text and sends it back to the sender. The sender
+     * verifies the MIC against the message sent earlier.
+     * @param message the message
+     * @param s1 the sender
+     * @param s2 the receiver
+     * @throws java.lang.Exception If anything goes wrong
+     */
+    static public void transmit(final String message, final Context s1,
+            final Context s2) throws Exception {
+        final byte[] messageBytes = message.getBytes();
+        System.out.printf("-------------------- TRANSMIT from %s to %s------------------------\n",
+                s1.name, s2.name);
+
+        byte[] t = s1.doAs(new Action() {
+            @Override
+            public byte[] run(Context me, byte[] dummy) throws Exception {
+                System.out.println("wrap");
+                MessageProp p1 = new MessageProp(0, true);
+                byte[] out = me.x.wrap(messageBytes, 0, messageBytes.length, p1);
+                System.out.println(printProp(p1));
+                return out;
+            }
+        }, null);
+
+        t = s2.doAs(new Action() {
+            @Override
+            public byte[] run(Context me, byte[] input) throws Exception {
+                MessageProp p1 = new MessageProp(0, true);
+                byte[] bytes = me.x.unwrap(input, 0, input.length, p1);
+                if (!Arrays.equals(messageBytes, bytes))
+                    throw new Exception("wrap/unwrap mismatch");
+                System.out.println("unwrap");
+                System.out.println(printProp(p1));
+                p1 = new MessageProp(0, true);
+                System.out.println("getMIC");
+                bytes = me.x.getMIC(bytes, 0, bytes.length, p1);
+                System.out.println(printProp(p1));
+                return bytes;
+            }
+        }, t);
+        // Re-unwrap should make p2.isDuplicateToken() returns true
+        s1.doAs(new Action() {
+            @Override
+            public byte[] run(Context me, byte[] input) throws Exception {
+                MessageProp p1 = new MessageProp(0, true);
+                System.out.println("verifyMIC");
+                me.x.verifyMIC(input, 0, input.length,
+                        messageBytes, 0, messageBytes.length,
+                        p1);
+                System.out.println(printProp(p1));
+                return null;
+            }
+        }, t);
+    }
+
+    /**
+     * Returns a string description of a MessageProp object
+     * @param prop the object
+     * @return the description
+     */
+    static public String printProp(MessageProp prop) {
+        StringBuffer sb = new StringBuffer();
+        sb.append("MessagePop: ");
+        sb.append("QOP="+ prop.getQOP() + ", ");
+        sb.append(prop.getPrivacy()?"privacy, ":"");
+        sb.append(prop.isDuplicateToken()?"dup, ":"");
+        sb.append(prop.isGapToken()?"gap, ":"");
+        sb.append(prop.isOldToken()?"old, ":"");
+        sb.append(prop.isUnseqToken()?"unseq, ":"");
+        sb.append(prop.getMinorString()+ "(" + prop.getMinorStatus()+")");
+        return sb.toString();
+    }
+
+    /**
+     * Handshake (security context establishment process) between two Contexts
+     * @param c the initiator
+     * @param s the acceptor
+     * @throws java.lang.Exception
+     */
+    static public void handshake(final Context c, final Context s) throws Exception {
+        byte[] t = new byte[0];
+        while (!c.f || !s.f) {
+            t = c.doAs(new Action() {
+                @Override
+                public byte[] run(Context me, byte[] input) throws Exception {
+                    if (me.x.isEstablished()) {
+                        me.f = true;
+                        System.out.println(c.name + " side established");
+                        if (input != null) {
+                            throw new Exception("Context established but " +
+                                    "still receive token at " + c.name);
+                        }
+                        return null;
+                    } else {
+                        System.out.println(c.name + " call initSecContext");
+                        return me.x.initSecContext(input, 0, input.length);
+                    }
+                }
+            }, t);
+
+            t = s.doAs(new Action() {
+                @Override
+                public byte[] run(Context me, byte[] input) throws Exception {
+                    if (me.x.isEstablished()) {
+                        me.f = true;
+                        System.out.println(s.name + " side established");
+                        if (input != null) {
+                            throw new Exception("Context established but " +
+                                    "still receive token at " + s.name);
+                        }
+                        return null;
+                    } else {
+                        System.out.println(s.name + " called acceptSecContext");
+                        return me.x.acceptSecContext(input, 0, input.length);
+                    }
+                }
+            }, t);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/CrossRealm.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6706974
+ * @summary Add krb5 test infrastructure
+ */
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.security.Security;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import org.ietf.jgss.GSSContext;
+import org.ietf.jgss.GSSManager;
+import org.ietf.jgss.GSSName;
+import sun.security.jgss.GSSUtil;
+
+public class CrossRealm implements CallbackHandler {
+    public static void main(String[] args) throws Exception {
+        startKDCs();
+        xRealmAuth();
+    }
+
+    static void startKDCs() throws Exception {
+        // Create and start the KDC
+        KDC kdc1 = KDC.create("RABBIT.HOLE");
+        kdc1.addPrincipal("dummy", "bogus".toCharArray());
+        kdc1.addPrincipalRandKey("krbtgt/RABBIT.HOLE");
+        kdc1.addPrincipal("krbtgt/SNAKE.HOLE", "sharedsec".toCharArray());
+
+        KDC kdc2 = KDC.create("SNAKE.HOLE");
+        kdc2.addPrincipalRandKey("krbtgt/SNAKE.HOLE");
+        kdc2.addPrincipal("krbtgt/RABBIT.HOLE", "sharedsec".toCharArray());
+        kdc2.addPrincipalRandKey("host/www.snake.hole");
+
+        KDC.saveConfig("krb5-localkdc.conf", kdc1, kdc2,
+                "forwardable=true",
+                "[domain_realm]",
+                ".snake.hole=SNAKE.HOLE");
+        System.setProperty("java.security.krb5.conf", "krb5-localkdc.conf");
+    }
+
+    static void xRealmAuth() throws Exception {
+        Security.setProperty("auth.login.defaultCallbackHandler", "CrossRealm");
+        System.setProperty("java.security.auth.login.config", "jaas-localkdc.conf");
+        System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
+        FileOutputStream fos = new FileOutputStream("jaas-localkdc.conf");
+        fos.write(("com.sun.security.jgss.krb5.initiate {\n" +
+                "    com.sun.security.auth.module.Krb5LoginModule\n" +
+                "    required\n" +
+                "    principal=dummy\n" +
+                "    doNotPrompt=false\n" +
+                "    useTicketCache=false\n" +
+                "    ;\n" +
+                "};").getBytes());
+        fos.close();
+
+        GSSManager m = GSSManager.getInstance();
+        m.createContext(
+                m.createName("host@www.snake.hole", GSSName.NT_HOSTBASED_SERVICE),
+                GSSUtil.GSS_KRB5_MECH_OID,
+                null,
+                GSSContext.DEFAULT_LIFETIME).initSecContext(new byte[0], 0, 0);
+    }
+
+    @Override
+    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+        for (Callback callback : callbacks) {
+            if (callback instanceof NameCallback) {
+                ((NameCallback) callback).setName("dummy");
+            }
+            if (callback instanceof PasswordCallback) {
+                ((PasswordCallback) callback).setPassword("bogus".toCharArray());
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/KDC.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,992 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.net.*;
+import java.io.*;
+import java.lang.reflect.Method;
+import java.security.SecureRandom;
+import java.util.*;
+import java.util.concurrent.*;
+import sun.security.krb5.*;
+import sun.security.krb5.internal.*;
+import sun.security.krb5.internal.ccache.CredentialsCache;
+import sun.security.krb5.internal.crypto.KeyUsage;
+import sun.security.krb5.internal.ktab.KeyTab;
+import sun.security.util.DerInputStream;
+import sun.security.util.DerOutputStream;
+import sun.security.util.DerValue;
+
+/**
+ * A KDC server.
+ * <p>
+ * Features:
+ * <ol>
+ * <li> Supports TCP and UDP
+ * <li> Supports AS-REQ and TGS-REQ
+ * <li> Principal db and other settings hard coded in application
+ * <li> Options, say, request preauth or not
+ * </ol>
+ * Side effects:
+ * <ol>
+ * <li> The Sun-internal class <code>sun.security.krb5.Config</code> is a
+ * singleton and initialized according to Kerberos settings (krb5.conf and
+ * java.security.krb5.* system properties). This means once it's initialized
+ * it will not automatically notice any changes to these settings (or file
+ * changes of krb5.conf). The KDC class normally does not touch these
+ * settings (except for the <code>writeKtab()</code> method). However, to make
+ * sure nothing ever goes wrong, if you want to make any changes to these
+ * settings after calling a KDC method, call <code>Config.refresh()</code> to
+ * make sure your changes are reflected in the <code>Config</code> object.
+ * </ol>
+ * Issues and TODOs:
+ * <ol>
+ * <li> Generates krb5.conf to be used on another machine, currently the kdc is
+ * always localhost
+ * <li> More options to KDC, say, error output, say, response nonce !=
+ * request nonce
+ * </ol>
+ * Note: This program uses internal krb5 classes (including reflection to
+ * access private fields and methods).
+ * <p>
+ * Usages:
+ * <p>
+ * 1. Init and start the KDC:
+ * <pre>
+ * KDC kdc = KDC.create("REALM.NAME", port, isDaemon);
+ * KDC kdc = KDC.create("REALM.NAME");
+ * </pre>
+ * Here, <code>port</code> is the UDP and TCP port number the KDC server
+ * listens on. If zero, a random port is chosen, which you can use getPort()
+ * later to retrieve the value.
+ * <p>
+ * If <code>isDaemon</code> is true, the KDC worker threads will be daemons.
+ * <p>
+ * The shortcut <code>KDC.create("REALM.NAME")</code> has port=0 and
+ * isDaemon=false, and is commonly used in an embedded KDC.
+ * <p>
+ * 2. Adding users:
+ * <pre>
+ * kdc.addPrincipal(String principal_name, char[] password);
+ * kdc.addPrincipalRandKey(String principal_name);
+ * </pre>
+ * A service principal's name should look like "host/f.q.d.n". The second form
+ * generates a random key. To expose this key, call <code>writeKtab()</code> to
+ * save the keys into a keytab file.
+ * <p>
+ * Note that you need to add the principal name krbtgt/REALM.NAME yourself.
+ * <p>
+ * Note that you can safely add a principal at any time after the KDC is
+ * started and before a user requests info on this principal.
+ * <p>
+ * 3. Other public methods:
+ * <ul>
+ * <li> <code>getPort</code>: Returns the port number the KDC uses
+ * <li> <code>getRealm</code>: Returns the realm name
+ * <li> <code>writeKtab</code>: Writes all principals' keys into a keytab file
+ * <li> <code>saveConfig</code>: Saves a krb5.conf file to access this KDC
+ * <li> <code>setOption</code>: Sets various options
+ * </ul>
+ * Read the javadoc for details. Lazy developer can use <code>OneKDC</code>
+ * directly.
+ */
+public class KDC {
+
+    // Under the hood.
+
+    // The random generator to generate random keys (including session keys)
+    private static SecureRandom secureRandom = new SecureRandom();
+    // Principal db
+    private Map<String,char[]> passwords = new HashMap<String,char[]>();
+    // Realm name
+    private String realm;
+    // The request/response job queue
+    private BlockingQueue<Job> q = new ArrayBlockingQueue<Job>(100);
+    // Service port number
+    private int port;
+    // Options
+    private Map<Option,Object> options = new HashMap<Option,Object>();
+
+    /**
+     * Option names, to be expanded forever.
+     */
+    public static enum Option {
+        /**
+         * Whether pre-authentication is required. Default Boolean.TRUE
+         */
+        PREAUTH_REQUIRED,
+    };
+
+    /**
+     * A standalone KDC server.
+     * @param args
+     * @throws java.lang.Exception
+     */
+    public static void main(String[] args) throws Exception {
+        if (args.length > 0) {
+            if (args[0].equals("-help") || args[0].equals("--help")) {
+                System.out.println("Usage:");
+                System.out.println("   java " + KDC.class + "       " +
+                        "Start KDC on port 8888");
+                return;
+            }
+        }
+        String localhost = "localhost";
+        try {
+            localhost = InetAddress.getByName(localhost)
+                    .getCanonicalHostName();
+        } catch (UnknownHostException uhe) {
+            ;   // Ignore, localhost is still "localhost"
+        }
+        KDC kdc = create("RABBIT.HOLE", 8888, false);
+        kdc.addPrincipal("dummy", "bogus".toCharArray());
+        kdc.addPrincipal("foo", "bar".toCharArray());
+        kdc.addPrincipalRandKey("krbtgt/" + kdc.realm);
+        kdc.addPrincipalRandKey("server/" + localhost);
+        kdc.addPrincipalRandKey("backend/" + localhost);
+    }
+
+    /**
+     * Creates and starts a KDC running as a daemon on a random port.
+     * @param realm the realm name
+     * @return the running KDC instance
+     * @throws java.io.IOException for any socket creation error
+     */
+    public static KDC create(String realm) throws IOException {
+        return create(realm, 0, true);
+    }
+
+    /**
+     * Creates and starts a KDC server.
+     * @param realm the realm name
+     * @param port the TCP and UDP port to listen to. A random port will to
+     *        chosen if zero.
+     * @param asDaemon if true, KDC threads will be daemons. Otherwise, not.
+     * @return the running KDC instance
+     * @throws java.io.IOException for any socket creation error
+     */
+    public static KDC create(String realm, int port, boolean asDaemon) throws IOException {
+        return new KDC(realm, port, asDaemon);
+    }
+
+    /**
+     * Sets an option
+     * @param key the option name
+     * @param obj the value
+     */
+    public void setOption(Option key, Object value) {
+        options.put(key, value);
+    }
+
+    /**
+     * Write all principals' keys into a keytab file. Note that the keys for
+     * the krbtgt principal for this realm will not be written.
+     * <p>
+     * Attention: This method references krb5.conf settings. If you need to
+     * setup krb5.conf later, please call <code>Config.refresh()</code> after
+     * the new setting. For example:
+     * <pre>
+     * kdc.writeKtab("/etc/kdc/ktab");  // Config is initialized,
+     * System.setProperty("java.security.krb5.conf", "/home/mykrb5.conf");
+     * Config.refresh();
+     * </pre>
+     *
+     * Inside this method there are 2 places krb5.conf is used:
+     * <ol>
+     * <li> (Fatal) Generating keys: EncryptionKey.acquireSecretKeys
+     * <li> (Has workaround) Creating PrincipalName
+     * </ol>
+     * @param tab The keytab filename to write to.
+     * @throws java.io.IOException for any file output error
+     * @throws sun.security.krb5.KrbException for any realm and/or principal
+     *         name error.
+     */
+    public void writeKtab(String tab) throws IOException, KrbException {
+        KeyTab ktab = KeyTab.create(tab);
+        for (String name : passwords.keySet()) {
+            if (name.equals("krbtgt/" + realm)) {
+                continue;
+            }
+            ktab.addEntry(new PrincipalName(name + "@" + realm,
+                    name.indexOf('/') < 0 ?
+                        PrincipalName.KRB_NT_UNKNOWN :
+                        PrincipalName.KRB_NT_SRV_HST), passwords.get(name));
+        }
+        ktab.save();
+    }
+
+    /**
+     * Adds a new principal to this realm with a given password.
+     * @param user the principal's name. For a service principal, use the
+     *        form of host/f.q.d.n
+     * @param pass the password for the principal
+     */
+    public void addPrincipal(String user, char[] pass) {
+        passwords.put(user, pass);
+    }
+
+    /**
+     * Adds a new principal to this realm with a random password
+     * @param user the principal's name. For a service principal, use the
+     *        form of host/f.q.d.n
+     */
+    public void addPrincipalRandKey(String user) {
+        passwords.put(user, randomPassword());
+    }
+
+    /**
+     * Returns the name of this realm
+     * @return the name of this realm
+     */
+    public String getRealm() {
+        return realm;
+    }
+
+    /**
+     * Writes a krb5.conf for one or more KDC that includes KDC locations for
+     * each realm and the default realm name. You can also add extra strings
+     * into the file. The method should be called like:
+     * <pre>
+     *   KDC.saveConfig("krb5.conf", kdc1, kdc2, ..., line1, line2, ...);
+     * </pre>
+     * Here you can provide one or more kdc# and zero or more line# arguments.
+     * The line# will be put after [libdefaults] and before [realms]. Therefore
+     * you can append new lines into [libdefaults] and/or create your new
+     * stanzas as well. Note that a newline character will be appended to
+     * each line# argument.
+     * <p>
+     * For example:
+     * <pre>
+     * KDC.saveConfig("krb5.conf", this);
+     * </pre>
+     * generates:
+     * <pre>
+     * [libdefaults]
+     * default_realm = REALM.NAME
+     *
+     * [realms]
+     *   REALM.NAME = {
+     *     kdc = localhost:port_number
+     *   }
+     * </pre>
+     *
+     * Another example:
+     * <pre>
+     * KDC.saveConfig("krb5.conf", kdc1, kdc2, "forwardable = true", "",
+     *         "[domain_realm]",
+     *         ".kdc1.com = KDC1.NAME");
+     * </pre>
+     * generates:
+     * <pre>
+     * [libdefaults]
+     * default_realm = KDC1.NAME
+     * forwardable = true
+     *
+     * [domain_realm]
+     * .kdc1.com = KDC1.NAME
+     *
+     * [realms]
+     *   KDC1.NAME = {
+     *     kdc = localhost:port1
+     *   }
+     *   KDC2.NAME = {
+     *     kdc = localhost:port2
+     *   }
+     * </pre>
+     * @param file the name of the file to write into
+     * @param kdc the first (and default) KDC
+     * @param more more KDCs or extra lines (in their appearing order) to
+     * insert into the krb5.conf file. This method reads each argument's type
+     * to determine what it's for. This argument can be empty.
+     * @throws java.io.IOException for any file output error
+     */
+    public static void saveConfig(String file, KDC kdc, Object... more)
+            throws IOException {
+        File f = new File(file);
+        StringBuffer sb = new StringBuffer();
+        sb.append("[libdefaults]\ndefault_realm = ");
+        sb.append(kdc.realm);
+        sb.append("\n");
+        for (Object o: more) {
+            if (o instanceof String) {
+                sb.append(o);
+                sb.append("\n");
+            }
+        }
+        sb.append("\n[realms]\n");
+        sb.append(realmLineForKDC(kdc));
+        for (Object o: more) {
+            if (o instanceof KDC) {
+                sb.append(realmLineForKDC((KDC)o));
+            }
+        }
+        FileOutputStream fos = new FileOutputStream(f);
+        fos.write(sb.toString().getBytes());
+        fos.close();
+    }
+
+    /**
+     * Returns the service port of the KDC server.
+     * @return the KDC service port
+     */
+    public int getPort() {
+        return port;
+    }
+
+    // Private helper methods
+
+    /**
+     * Private constructor, cannot be called outside.
+     * @param realm
+     */
+    private KDC(String realm) {
+        this.realm = realm;
+    }
+
+    /**
+     * A constructor that starts the KDC service also.
+     */
+    protected KDC(String realm, int port, boolean asDaemon)
+            throws IOException {
+        this(realm);
+        startServer(port, asDaemon);
+    }
+    /**
+     * Generates a 32-char random password
+     * @return the password
+     */
+    private static char[] randomPassword() {
+        char[] pass = new char[32];
+        for (int i=0; i<32; i++)
+            pass[i] = (char)secureRandom.nextInt();
+        return pass;
+    }
+
+    /**
+     * Generates a random key for the given encryption type.
+     * @param eType the encryption type
+     * @return the generated key
+     * @throws sun.security.krb5.KrbException for unknown/unsupported etype
+     */
+    private static EncryptionKey generateRandomKey(int eType)
+            throws KrbException  {
+        // Is 32 enough for AES256? I should have generated the keys directly
+        // but different cryptos have different rules on what keys are valid.
+        char[] pass = randomPassword();
+        String algo;
+        switch (eType) {
+            case EncryptedData.ETYPE_DES_CBC_MD5: algo = "DES"; break;
+            case EncryptedData.ETYPE_DES3_CBC_HMAC_SHA1_KD: algo = "DESede"; break;
+            case EncryptedData.ETYPE_AES128_CTS_HMAC_SHA1_96: algo = "AES128"; break;
+            case EncryptedData.ETYPE_ARCFOUR_HMAC: algo = "ArcFourHMAC"; break;
+            case EncryptedData.ETYPE_AES256_CTS_HMAC_SHA1_96: algo = "AES256"; break;
+            default: algo = "DES"; break;
+        }
+        return new EncryptionKey(pass, "NOTHING", algo);    // Silly
+    }
+
+    /**
+     * Returns the password for a given principal
+     * @param p principal
+     * @return the password
+     * @throws sun.security.krb5.KrbException when the principal is not inside
+     *         the database.
+     */
+    private char[] getPassword(PrincipalName p) throws KrbException {
+        char[] pass = passwords.get(p.getNameString());
+        if (pass == null) {
+            throw new KrbException(Krb5.KDC_ERR_C_PRINCIPAL_UNKNOWN);
+        }
+        return pass;
+    }
+
+    /**
+     * Returns the salt string for the principal. For normal users, the
+     * concatenation for the realm name and the sections of the principal;
+     * for krgtgt/A@B and krbtgt/B@A, always return AB (so that inter-realm
+     * principals have the same key).
+     * @param p principal
+     * @return the salt
+     */
+    private String getSalt(PrincipalName p) {
+        String[] ns = p.getNameStrings();
+        if (ns[0].equals("krbtgt") && ns.length > 1) {
+            // Shared cross-realm keys must be the same
+            if (ns[1].compareTo(realm) < 0) {
+                return ns[1] + realm;
+            } else {
+                return realm + ns[1];
+            }
+        } else {
+            String s = getRealm();
+            for (String n: p.getNameStrings()) {
+                s += n;
+            }
+            return s;
+        }
+    }
+
+    /**
+     * Returns the key for a given principal of the given encryption type
+     * @param p the principal
+     * @param etype the encryption type
+     * @return the key
+     * @throws sun.security.krb5.KrbException for unknown/unsupported etype
+     */
+    private EncryptionKey keyForUser(PrincipalName p, int etype) throws KrbException {
+        try {
+            // Do not call EncryptionKey.acquireSecretKeys(), otherwise
+            // the krb5.conf config file would be loaded.
+            Method stringToKey = EncryptionKey.class.getDeclaredMethod("stringToKey", char[].class, String.class, byte[].class, Integer.TYPE);
+            stringToKey.setAccessible(true);
+            return new EncryptionKey((byte[]) stringToKey.invoke(null, getPassword(p), getSalt(p), null, etype), etype, null);
+        } catch (InvocationTargetException ex) {
+            KrbException ke = (KrbException)ex.getCause();
+            throw ke;
+        } catch (Exception e) {
+            throw new RuntimeException(e);  // should not happen
+        }
+    }
+
+    /**
+     * Processes an incoming request and generates a response.
+     * @param in the request
+     * @return the response
+     * @throws java.lang.Exception for various errors
+     */
+    private byte[] processMessage(byte[] in) throws Exception {
+        if ((in[0] & 0x1f) == Krb5.KRB_AS_REQ)
+            return processAsReq(in);
+        else
+            return processTgsReq(in);
+    }
+
+    /**
+     * Processes a TGS_REQ and generates a TGS_REP (or KRB_ERROR)
+     * @param in the request
+     * @return the response
+     * @throws java.lang.Exception for various errors
+     */
+    private byte[] processTgsReq(byte[] in) throws Exception {
+        TGSReq tgsReq = new TGSReq(in);
+        try {
+            System.out.println(realm + "> " + tgsReq.reqBody.cname +
+                    " sends TGS-REQ for " +
+                    tgsReq.reqBody.sname);
+            KDCReqBody body = tgsReq.reqBody;
+            int etype = 0;
+
+            // Reflection: PAData[] pas = tgsReq.pAData;
+            Field f = KDCReq.class.getDeclaredField("pAData");
+            f.setAccessible(true);
+            PAData[] pas = (PAData[])f.get(tgsReq);
+
+            Ticket tkt = null;
+            EncTicketPart etp = null;
+            if (pas == null || pas.length == 0) {
+                throw new KrbException(Krb5.KDC_ERR_PADATA_TYPE_NOSUPP);
+            } else {
+                for (PAData pa: pas) {
+                    if (pa.getType() == Krb5.PA_TGS_REQ) {
+                        APReq apReq = new APReq(pa.getValue());
+                        EncryptedData ed = apReq.authenticator;
+                        tkt = apReq.ticket;
+                        etype = tkt.encPart.getEType();
+                        EncryptionKey kkey = null;
+                        if (!tkt.realm.toString().equals(realm)) {
+                            if (tkt.sname.getNameString().equals("krbtgt/" + realm)) {
+                                kkey = keyForUser(new PrincipalName("krbtgt/" + tkt.realm.toString(), realm), etype);
+                            }
+                        } else {
+                            kkey = keyForUser(tkt.sname, etype);
+                        }
+                        byte[] bb = tkt.encPart.decrypt(kkey, KeyUsage.KU_TICKET);
+                        DerInputStream derIn = new DerInputStream(bb);
+                        DerValue der = derIn.getDerValue();
+                        etp = new EncTicketPart(der.toByteArray());
+                    }
+                }
+                if (tkt == null) {
+                    throw new KrbException(Krb5.KDC_ERR_PADATA_TYPE_NOSUPP);
+                }
+            }
+            EncryptionKey skey = keyForUser(body.sname, etype);
+            if (skey == null) {
+                throw new KrbException(Krb5.KDC_ERR_SUMTYPE_NOSUPP); // TODO
+            }
+
+            // Session key for original ticket, TGT
+            EncryptionKey ckey = etp.key;
+
+            // Session key for session with the service
+            EncryptionKey key = generateRandomKey(etype);
+
+            // Check time, TODO
+            KerberosTime till = body.till;
+            if (till == null) {
+                throw new KrbException(Krb5.KDC_ERR_NEVER_VALID); // TODO
+            } else if (till.isZero()) {
+                till = new KerberosTime(new Date().getTime() + 1000 * 3600 * 11);
+            }
+
+            boolean[] bFlags = new boolean[Krb5.TKT_OPTS_MAX+1];
+            if (body.kdcOptions.get(KDCOptions.FORWARDABLE)) {
+                bFlags[Krb5.TKT_OPTS_FORWARDABLE] = true;
+            }
+            if (body.kdcOptions.get(KDCOptions.FORWARDED) ||
+                    etp.flags.get(Krb5.TKT_OPTS_FORWARDED)) {
+                bFlags[Krb5.TKT_OPTS_FORWARDED] = true;
+            }
+            if (body.kdcOptions.get(KDCOptions.RENEWABLE)) {
+                bFlags[Krb5.TKT_OPTS_RENEWABLE] = true;
+                //renew = new KerberosTime(new Date().getTime() + 1000 * 3600 * 24 * 7);
+            }
+            if (body.kdcOptions.get(KDCOptions.PROXIABLE)) {
+                bFlags[Krb5.TKT_OPTS_PROXIABLE] = true;
+            }
+            if (body.kdcOptions.get(KDCOptions.POSTDATED)) {
+                bFlags[Krb5.TKT_OPTS_POSTDATED] = true;
+            }
+            if (body.kdcOptions.get(KDCOptions.ALLOW_POSTDATE)) {
+                bFlags[Krb5.TKT_OPTS_MAY_POSTDATE] = true;
+            }
+            bFlags[Krb5.TKT_OPTS_INITIAL] = true;
+
+            TicketFlags tFlags = new TicketFlags(bFlags);
+            EncTicketPart enc = new EncTicketPart(
+                    tFlags,
+                    key,
+                    etp.crealm,
+                    etp.cname,
+                    new TransitedEncoding(1, new byte[0]),  // TODO
+                    new KerberosTime(new Date()),
+                    body.from,
+                    till, body.rtime,
+                    body.addresses,
+                    null);
+            Ticket t = new Ticket(
+                    body.crealm,
+                    body.sname,
+                    new EncryptedData(skey, enc.asn1Encode(), KeyUsage.KU_TICKET)
+            );
+            EncTGSRepPart enc_part = new EncTGSRepPart(
+                    key,
+                    new LastReq(new LastReqEntry[]{
+                        new LastReqEntry(0, new KerberosTime(new Date().getTime() - 10000))
+                    }),
+                    body.getNonce(),    // TODO: detect replay
+                    new KerberosTime(new Date().getTime() + 1000 * 3600 * 24),
+                    // Next 5 and last MUST be same with ticket
+                    tFlags,
+                    new KerberosTime(new Date()),
+                    body.from,
+                    till, body.rtime,
+                    body.crealm,
+                    body.sname,
+                    body.addresses
+                    );
+            EncryptedData edata = new EncryptedData(ckey, enc_part.asn1Encode(), KeyUsage.KU_ENC_TGS_REP_PART_SESSKEY);
+            TGSRep tgsRep = new TGSRep(null,
+                    etp.crealm,
+                    etp.cname,
+                    t,
+                    edata);
+            System.out.println("     Return " + tgsRep.cname
+                    + " ticket for " + tgsRep.ticket.sname);
+
+            DerOutputStream out = new DerOutputStream();
+            out.write(DerValue.createTag(DerValue.TAG_APPLICATION,
+                    true, (byte)Krb5.KRB_TGS_REP), tgsRep.asn1Encode());
+            return out.toByteArray();
+        } catch (KrbException ke) {
+            ke.printStackTrace(System.out);
+            KRBError kerr = ke.getError();
+            KDCReqBody body = tgsReq.reqBody;
+            System.out.println("     Error " + ke.returnCode()
+                    + " " +ke.returnCodeMessage());
+            if (kerr == null) {
+                kerr = new KRBError(null, null, null,
+                        new KerberosTime(new Date()),
+                        0,
+                        ke.returnCode(),
+                        body.crealm, body.cname,
+                        new Realm(getRealm()), body.sname,
+                        KrbException.errorMessage(ke.returnCode()),
+                        null);
+            }
+            return kerr.asn1Encode();
+        }
+    }
+
+    /**
+     * Processes a AS_REQ and generates a AS_REP (or KRB_ERROR)
+     * @param in the request
+     * @return the response
+     * @throws java.lang.Exception for various errors
+     */
+    private byte[] processAsReq(byte[] in) throws Exception {
+        ASReq asReq = new ASReq(in);
+        int[] eTypes = null;
+        try {
+            System.out.println(realm + "> " + asReq.reqBody.cname +
+                    " sends AS-REQ for " +
+                    asReq.reqBody.sname);
+
+            KDCReqBody body = asReq.reqBody;
+
+            // Reflection: int[] eType = body.eType;
+            Field f = KDCReqBody.class.getDeclaredField("eType");
+            f.setAccessible(true);
+            eTypes = (int[])f.get(body);
+            int eType = eTypes[0];
+
+            EncryptionKey ckey = keyForUser(body.cname, eType);
+            EncryptionKey skey = keyForUser(body.sname, eType);
+            if (ckey == null) {
+                throw new KrbException(Krb5.KDC_ERR_ETYPE_NOSUPP);
+            }
+            if (skey == null) {
+                throw new KrbException(Krb5.KDC_ERR_SUMTYPE_NOSUPP); // TODO
+            }
+
+            // Session key
+            EncryptionKey key = generateRandomKey(eType);
+            // Check time, TODO
+            KerberosTime till = body.till;
+            if (till == null) {
+                throw new KrbException(Krb5.KDC_ERR_NEVER_VALID); // TODO
+            } else if (till.isZero()) {
+                till = new KerberosTime(new Date().getTime() + 1000 * 3600 * 11);
+            }
+            //body.from
+            boolean[] bFlags = new boolean[Krb5.TKT_OPTS_MAX+1];
+            if (body.kdcOptions.get(KDCOptions.FORWARDABLE)) {
+                bFlags[Krb5.TKT_OPTS_FORWARDABLE] = true;
+            }
+            if (body.kdcOptions.get(KDCOptions.RENEWABLE)) {
+                bFlags[Krb5.TKT_OPTS_RENEWABLE] = true;
+                //renew = new KerberosTime(new Date().getTime() + 1000 * 3600 * 24 * 7);
+            }
+            if (body.kdcOptions.get(KDCOptions.PROXIABLE)) {
+                bFlags[Krb5.TKT_OPTS_PROXIABLE] = true;
+            }
+            if (body.kdcOptions.get(KDCOptions.POSTDATED)) {
+                bFlags[Krb5.TKT_OPTS_POSTDATED] = true;
+            }
+            if (body.kdcOptions.get(KDCOptions.ALLOW_POSTDATE)) {
+                bFlags[Krb5.TKT_OPTS_MAY_POSTDATE] = true;
+            }
+            bFlags[Krb5.TKT_OPTS_INITIAL] = true;
+
+            f = KDCReq.class.getDeclaredField("pAData");
+            f.setAccessible(true);
+            PAData[] pas = (PAData[])f.get(asReq);
+            if (pas == null || pas.length == 0) {
+                Object preauth = options.get(Option.PREAUTH_REQUIRED);
+                if (preauth == null || preauth.equals(Boolean.TRUE)) {
+                    throw new KrbException(Krb5.KDC_ERR_PREAUTH_REQUIRED);
+                }
+            } else {
+                try {
+                    Constructor<EncryptedData> ctor = EncryptedData.class.getDeclaredConstructor(DerValue.class);
+                    ctor.setAccessible(true);
+                    EncryptedData data = ctor.newInstance(new DerValue(pas[0].getValue()));
+                    data.decrypt(ckey, KeyUsage.KU_PA_ENC_TS);
+                } catch (Exception e) {
+                    throw new KrbException(Krb5.KDC_ERR_PREAUTH_FAILED);
+                }
+                bFlags[Krb5.TKT_OPTS_PRE_AUTHENT] = true;
+            }
+
+            TicketFlags tFlags = new TicketFlags(bFlags);
+            EncTicketPart enc = new EncTicketPart(
+                    tFlags,
+                    key,
+                    body.crealm,
+                    body.cname,
+                    new TransitedEncoding(1, new byte[0]),
+                    new KerberosTime(new Date()),
+                    body.from,
+                    till, body.rtime,
+                    body.addresses,
+                    null);
+            Ticket t = new Ticket(
+                    body.crealm,
+                    body.sname,
+                    new EncryptedData(skey, enc.asn1Encode(), KeyUsage.KU_TICKET)
+            );
+            EncASRepPart enc_part = new EncASRepPart(
+                    key,
+                    new LastReq(new LastReqEntry[]{
+                        new LastReqEntry(0, new KerberosTime(new Date().getTime() - 10000))
+                    }),
+                    body.getNonce(),    // TODO: detect replay?
+                    new KerberosTime(new Date().getTime() + 1000 * 3600 * 24),
+                    // Next 5 and last MUST be same with ticket
+                    tFlags,
+                    new KerberosTime(new Date()),
+                    body.from,
+                    till, body.rtime,
+                    body.crealm,
+                    body.sname,
+                    body.addresses
+                    );
+            EncryptedData edata = new EncryptedData(ckey, enc_part.asn1Encode(), KeyUsage.KU_ENC_AS_REP_PART);
+            ASRep asRep = new ASRep(null,
+                    body.crealm,
+                    body.cname,
+                    t,
+                    edata);
+
+            System.out.println("     Return " + asRep.cname
+                    + " ticket for " + asRep.ticket.sname);
+
+            DerOutputStream out = new DerOutputStream();
+            out.write(DerValue.createTag(DerValue.TAG_APPLICATION,
+                    true, (byte)Krb5.KRB_AS_REP), asRep.asn1Encode());
+            byte[] result = out.toByteArray();
+
+            // Added feature:
+            // Write the current issuing TGT into a ccache file specified
+            // by the system property below.
+            String ccache = System.getProperty("test.kdc.save.ccache");
+            if (ccache != null) {
+                asRep.encKDCRepPart = enc_part;
+                sun.security.krb5.internal.ccache.Credentials credentials =
+                    new sun.security.krb5.internal.ccache.Credentials(asRep);
+                asReq.reqBody.cname.setRealm(getRealm());
+                CredentialsCache cache =
+                    CredentialsCache.create(asReq.reqBody.cname, ccache);
+                if (cache == null) {
+                   throw new IOException("Unable to create the cache file " +
+                                         ccache);
+                }
+                cache.update(credentials);
+                cache.save();
+                new File(ccache).deleteOnExit();
+            }
+
+            return result;
+        } catch (KrbException ke) {
+            ke.printStackTrace(System.out);
+            KRBError kerr = ke.getError();
+            KDCReqBody body = asReq.reqBody;
+            System.out.println("     Error " + ke.returnCode()
+                    + " " +ke.returnCodeMessage());
+            byte[] eData = null;
+            if (kerr == null) {
+                if (ke.returnCode() == Krb5.KDC_ERR_PREAUTH_REQUIRED ||
+                        ke.returnCode() == Krb5.KDC_ERR_PREAUTH_FAILED) {
+                    PAData pa;
+
+                    ETypeInfo2 ei2 = new ETypeInfo2(eTypes[0], null, null);
+                    DerOutputStream eid = new DerOutputStream();
+                    eid.write(DerValue.tag_Sequence, ei2.asn1Encode());
+
+                    pa = new PAData(Krb5.PA_ETYPE_INFO2, eid.toByteArray());
+
+                    DerOutputStream bytes = new DerOutputStream();
+                    bytes.write(new PAData(Krb5.PA_ENC_TIMESTAMP, new byte[0]).asn1Encode());
+                    bytes.write(pa.asn1Encode());
+
+                    boolean allOld = true;
+                    for (int i: eTypes) {
+                        if (i == EncryptedData.ETYPE_AES128_CTS_HMAC_SHA1_96 ||
+                                i == EncryptedData.ETYPE_AES256_CTS_HMAC_SHA1_96) {
+                            allOld = false;
+                            break;
+                        }
+                    }
+                    if (allOld) {
+                        ETypeInfo ei = new ETypeInfo(eTypes[0], null);
+                        eid = new DerOutputStream();
+                        eid.write(DerValue.tag_Sequence, ei.asn1Encode());
+                        pa = new PAData(Krb5.PA_ETYPE_INFO, eid.toByteArray());
+                        bytes.write(pa.asn1Encode());
+                    }
+                    DerOutputStream temp = new DerOutputStream();
+                    temp.write(DerValue.tag_Sequence, bytes);
+                    eData = temp.toByteArray();
+                }
+                kerr = new KRBError(null, null, null,
+                        new KerberosTime(new Date()),
+                        0,
+                        ke.returnCode(),
+                        body.crealm, body.cname,
+                        new Realm(getRealm()), body.sname,
+                        KrbException.errorMessage(ke.returnCode()),
+                        eData);
+            }
+            return kerr.asn1Encode();
+        }
+    }
+
+    /**
+     * Generates a line for a KDC to put inside [realms] of krb5.conf
+     * @param kdc the KDC
+     * @return REALM.NAME = { kdc = localhost:port }
+     */
+    private static String realmLineForKDC(KDC kdc) {
+        return String.format("  %s = {\n    kdc = localhost:%d\n  }\n", kdc.realm, kdc.port);
+    }
+
+    /**
+     * Start the KDC service. This server listens on both UDP and TCP using
+     * the same port number. It uses three threads to deal with requests.
+     * They can be set to daemon threads if requested.
+     * @param port the port number to listen to. If zero, a random available
+     *  port no less than 8000 will be chosen and used.
+     * @param asDaemon true if the KDC threads should be daemons
+     * @throws java.io.IOException for any communication error
+     */
+    protected void startServer(int port, boolean asDaemon) throws IOException {
+        DatagramSocket u1 = null;
+        ServerSocket t1 = null;
+        if (port > 0) {
+            u1 = new DatagramSocket(port, InetAddress.getByName("127.0.0.1"));
+            t1 = new ServerSocket(port);
+        } else {
+            while (true) {
+                // Try to find a port number that's both TCP and UDP free
+                try {
+                    port = 8000 + new java.util.Random().nextInt(10000);
+                    u1 = null;
+                    u1 = new DatagramSocket(port, InetAddress.getByName("127.0.0.1"));
+                    t1 = new ServerSocket(port);
+                    break;
+                } catch (Exception e) {
+                    if (u1 != null) u1.close();
+                }
+            }
+        }
+        final DatagramSocket udp = u1;
+        final ServerSocket tcp = t1;
+        System.out.println("Start KDC on " + port);
+
+        this.port = port;
+
+        // The UDP consumer
+        Thread thread = new Thread() {
+            public void run() {
+                while (true) {
+                    try {
+                        byte[] inbuf = new byte[8192];
+                        DatagramPacket p = new DatagramPacket(inbuf, inbuf.length);
+                        udp.receive(p);
+                        System.out.println("-----------------------------------------------");
+                        System.out.println(">>>>> UDP packet received");
+                        q.put(new Job(processMessage(Arrays.copyOf(inbuf, p.getLength())), udp, p));
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        };
+        thread.setDaemon(asDaemon);
+        thread.start();
+
+        // The TCP consumer
+        thread = new Thread() {
+            public void run() {
+                while (true) {
+                    try {
+                        Socket socket = tcp.accept();
+                        System.out.println("-----------------------------------------------");
+                        System.out.println(">>>>> TCP connection established");
+                        DataInputStream in = new DataInputStream(socket.getInputStream());
+                        DataOutputStream out = new DataOutputStream(socket.getOutputStream());
+                        byte[] token = new byte[in.readInt()];
+                        in.readFully(token);
+                        q.put(new Job(processMessage(token), socket, out));
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        };
+        thread.setDaemon(asDaemon);
+        thread.start();
+
+        // The dispatcher
+        thread = new Thread() {
+            public void run() {
+                while (true) {
+                    try {
+                        q.take().send();
+                    } catch (Exception e) {
+                    }
+                }
+            }
+        };
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+    /**
+     * Helper class to encapsulate a job in a KDC.
+     */
+    private static class Job {
+        byte[] token;           // The received request at creation time and
+                                // the response at send time
+        Socket s;               // The TCP socket from where the request comes
+        DataOutputStream out;   // The OutputStream of the TCP socket
+        DatagramSocket s2;      // The UDP socket from where the request comes
+        DatagramPacket dp;      // The incoming UDP datagram packet
+        boolean useTCP;         // Whether TCP or UDP is used
+
+        // Creates a job object for TCP
+        Job(byte[] token, Socket s, DataOutputStream out) {
+            useTCP = true;
+            this.token = token;
+            this.s = s;
+            this.out = out;
+        }
+
+        // Creates a job object for UDP
+        Job(byte[] token, DatagramSocket s2, DatagramPacket dp) {
+            useTCP = false;
+            this.token = token;
+            this.s2 = s2;
+            this.dp = dp;
+        }
+
+        // Sends the output back to the client
+        void send() {
+            try {
+                if (useTCP) {
+                    System.out.println(">>>>> TCP request honored");
+                    out.writeInt(token.length);
+                    out.write(token);
+                    s.close();
+                } else {
+                    System.out.println(">>>>> UDP request honored");
+                    s2.send(new DatagramPacket(token, token.length, dp.getAddress(), dp.getPort()));
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/KerberosHashEqualsTest.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 4641821
+ * @summary hashCode() and equals() for KerberosKey and KerberosTicket
+ */
+
+import java.net.InetAddress;
+import java.util.Date;
+import javax.security.auth.kerberos.KerberosKey;
+import javax.security.auth.kerberos.KerberosPrincipal;
+import javax.security.auth.kerberos.KerberosTicket;
+
+public class KerberosHashEqualsTest {
+    public static void main(String[] args) throws Exception {
+        new OneKDC(null);
+        new KerberosHashEqualsTest().check();
+    }
+
+    void checkSame(Object o1, Object o2) {
+        if(!o1.equals(o2)) {
+            throw new RuntimeException("equals() fails");
+        }
+        if(o1.hashCode() != o2.hashCode()) {
+            throw new RuntimeException("hashCode() not same");
+        }
+    }
+
+    void checkNotSame(Object o1, Object o2) {
+        if(o1.equals(o2)) {
+            throw new RuntimeException("equals() succeeds");
+        }
+    }
+
+    void check() throws Exception {
+
+        // The key part:
+        // new KerberosKey(principal, bytes, keyType, version)
+
+        KerberosKey k1, k2;
+        KerberosPrincipal CLIENT = new KerberosPrincipal("client");
+        KerberosPrincipal SERVER = new KerberosPrincipal("server");
+        byte[] PASS = "pass".getBytes();
+
+        k1 = new KerberosKey(CLIENT, PASS, 1, 1);
+        k2 = new KerberosKey(CLIENT, PASS, 1, 1);
+        checkSame(k1, k1);  // me is me
+        checkSame(k1, k2);  // same
+
+        // A destroyed key doesn't equal to any key
+        k2.destroy();
+        checkNotSame(k1, k2);
+        checkNotSame(k2, k1);
+        k1.destroy();
+        checkNotSame(k1, k2);   // even if they are both destroyed
+        checkNotSame(k2, k1);
+        checkSame(k2, k2);
+
+        // a little difference means not equal
+        k1 = new KerberosKey(CLIENT, PASS, 1, 1);
+        k2 = new KerberosKey(SERVER, PASS, 1, 1);
+        checkNotSame(k1, k2);   // Different principal name
+
+        k2 = new KerberosKey(CLIENT, "ssap".getBytes(), 1, 1);
+        checkNotSame(k1, k2);   // Different password
+
+        k2 = new KerberosKey(CLIENT, PASS, 2, 1);
+        checkNotSame(k1, k2);   // Different keytype
+
+        k2 = new KerberosKey(CLIENT, PASS, 1, 2);
+        checkNotSame(k1, k2);   // Different version
+
+        k2 = new KerberosKey(null, PASS, 1, 2);
+        checkNotSame(k1, k2);   // null is not non-null
+
+        k1 = new KerberosKey(null, PASS, 1, 2);
+        checkSame(k1, k2);      // null is null
+
+        checkNotSame(k1, "Another Object");
+
+        // The ticket part:
+        // new KerberosTicket(asn1 bytes, client, server, session key, type, flags,
+        //      auth, start, end, renewUntil times, address)
+
+        KerberosTicket t1, t2;
+
+        byte[] ASN1 = "asn1".getBytes();
+        boolean[] FORWARDABLE = new boolean[] {true, true};
+        boolean[] ALLTRUE = new boolean[] {true, true, true, true, true, true, true, true, true, true};
+        Date D0 = new Date(0);
+
+        t1 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null);
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null);
+        checkSame(t1, t1);
+        checkSame(t1, t2);
+
+        // destroyed tickets doesn't equal to each other
+        t1.destroy();
+        checkNotSame(t1, t2);
+        checkNotSame(t2, t1);
+
+        t2.destroy();
+        checkNotSame(t1, t2);   // even if they are both destroyed
+        checkNotSame(t2, t1);
+
+        checkSame(t2, t2);  // unless they are the same object
+
+        // a little difference means not equal
+        t1 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null);
+        t2 = new KerberosTicket("asn11".getBytes(), CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null);
+        checkNotSame(t1, t2);   // Different ASN1 encoding
+
+        t2 = new KerberosTicket(ASN1, new KerberosPrincipal("client1"), SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null);
+        checkNotSame(t1, t2);   // Different client
+
+        t2 = new KerberosTicket(ASN1, CLIENT, new KerberosPrincipal("server1"), PASS, 1, FORWARDABLE, D0, D0, D0, D0, null);
+        checkNotSame(t1, t2);   // Different server
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, "pass1".getBytes(), 1, FORWARDABLE, D0, D0, D0, D0, null);
+        checkNotSame(t1, t2);   // Different session key
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 2, FORWARDABLE, D0, D0, D0, D0, null);
+        checkNotSame(t1, t2);   // Different key type
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, new boolean[] {true, false}, D0, D0, D0, D0, null);
+        checkNotSame(t1, t2);   // Different flags, not FORWARDABLE
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, new Date(1), D0, D0, D0, null);
+        checkNotSame(t1, t2);   // Different authtime
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, new Date(1), D0, D0, null);
+        checkNotSame(t1, t2);   // Different starttime
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, new Date(1), D0, null);
+        checkNotSame(t1, t2);   // Different endtime
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, new InetAddress[2]);
+        checkNotSame(t1, t2);   // Different client addresses
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, new Date(1), null);
+        t1 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, new Date(2), null);
+        checkSame(t1, t2);      // renewtill is ignored when RENEWABLE ticket flag is not set.
+
+        t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, ALLTRUE, D0, D0, D0, new Date(1), null);
+        t1 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, ALLTRUE, D0, D0, D0, new Date(2), null);
+        checkNotSame(t1, t2);   // renewtill is used when RENEWABLE is set.
+
+        checkNotSame(t1, "Another Object");
+        System.out.println("Good!");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/LoginModuleOptions.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6765491
+ * @summary Krb5LoginModule a little too restrictive, and the doc is not clear.
+ */
+import com.sun.security.auth.module.Krb5LoginModule;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import javax.security.auth.Subject;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+public class LoginModuleOptions {
+
+    private static final String NAME = "javax.security.auth.login.name";
+    private static final String PWD = "javax.security.auth.login.password";
+
+    public static void main(String[] args) throws Exception {
+        OneKDC kdc = new OneKDC(null);
+        kdc.addPrincipal("foo", "bar".toCharArray());
+        kdc.writeKtab(OneKDC.KTAB); // rewrite to add foo
+
+        // All 4 works: keytab, shared state, callback, cache
+        login(null, "useKeyTab", "true", "principal", "dummy");
+        login(null, "tryFirstPass", "true", NAME, OneKDC.USER,
+                PWD, OneKDC.PASS);
+        System.setProperty("test.kdc.save.ccache", "krbcc");
+        login(new MyCallback(OneKDC.USER, OneKDC.PASS));    // save the cache
+        System.clearProperty("test.kdc.save.ccache");
+        login(null, "useTicketCache", "true", "ticketCache", "krbcc");
+
+        // Fallbacks
+        // 1. ccache -> keytab
+        login(null, "useTicketCache", "true", "ticketCache", "krbcc_non_exists",
+                "useKeyTab", "true", "principal", "dummy");
+        // 2. keytab -> shared
+        login(null, "useKeyTab", "true", "principal", "dummy",
+                "keyTab", "ktab_non_exist",
+                "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS);
+        // 3. shared -> callback
+        // 3.1. useFirstPass, no callback
+        boolean failed = false;
+        try {
+            login(new MyCallback(OneKDC.USER, OneKDC.PASS),
+                    "useFirstPass", "true",
+                    NAME, OneKDC.USER, PWD, "haha".toCharArray());
+        } catch (Exception e) {
+            failed = true;
+        }
+        if (!failed) {
+            throw new Exception("useFirstPass should not fallback to callback");
+        }
+        // 3.2. tryFirstPass, has callback
+        login(new MyCallback(OneKDC.USER, OneKDC.PASS),
+                "tryFirstPass", "true",
+                NAME, OneKDC.USER, PWD, "haha".toCharArray());
+
+        // Preferences of type
+        // 1. ccache preferred to keytab
+        login(new MyCallback("foo", null),
+                "useTicketCache", "true", "ticketCache", "krbcc",
+                "useKeyTab", "true");
+        // 2. keytab preferred to shared. This test case is not exactly correct,
+        // because principal=dummy would shadow the PWD setting in the shared
+        // state. So by only looking at the final authentication user name
+        // (which is how this program does), there's no way to tell if keyTab
+        // is picked first, or shared is tried first but fallback to keytab.
+        login(null, "useKeyTab", "true", "principal", "dummy",
+                "tryFirstPass", "true", NAME, "foo", PWD, "bar".toCharArray());
+        // 3. shared preferred to callback
+        login(new MyCallback("foo", "bar".toCharArray()),
+                "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS);
+
+        // Preferences of username
+        // 1. principal preferred to NAME (NAME can be wrong or missing)
+        login(null, "principal", OneKDC.USER,
+                "tryFirstPass", "true", NAME, "someone_else", PWD, OneKDC.PASS);
+        login(null, "principal", OneKDC.USER,
+                "tryFirstPass", "true", PWD, OneKDC.PASS);
+        // 2. NAME preferred to callback
+        login(new MyCallback("someone_else", OneKDC.PASS),
+                "principal", OneKDC.USER);
+        // 3. With tryFirstPass, NAME preferred to callback
+        login(new MyCallback("someone_else", null),
+                "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS);
+        // 3.1. you must provide a NAME (when there's no principal)
+        failed = false;
+        try {
+            login(new MyCallback(OneKDC.USER, null),
+                    "tryFirstPass", "true", PWD, OneKDC.PASS);
+        } catch (Exception e) {
+            failed = true;
+        }
+        if (!failed) {
+            throw new Exception("useFirstPass must provide a NAME");
+        }
+        // 3.2 Hybrid, you can use NAME as "", and provide it using callback.
+        // I don't think this is designed.
+        login(new MyCallback(OneKDC.USER, null),
+                "tryFirstPass", "true", NAME, "", PWD, OneKDC.PASS);
+
+        // Test for the bug fix: doNotPrompt can be true if tryFirstPass=true
+        login(null, "doNotPrompt", "true", "storeKey", "true",
+                "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS);
+    }
+
+    static void login(CallbackHandler callback, Object... options)
+            throws Exception {
+        Krb5LoginModule krb5 = new Krb5LoginModule();
+        Subject subject = new Subject();
+        Map<String, String> map = new HashMap<String, String>();
+        Map<String, Object> shared = new HashMap<String, Object>();
+
+        int count = options.length / 2;
+        for (int i = 0; i < count; i++) {
+            String key = (String) options[2 * i];
+            Object value = options[2 * i + 1];
+            if (key.startsWith("javax")) {
+                shared.put(key, value);
+            } else {
+                map.put(key, (String) value);
+            }
+        }
+        krb5.initialize(subject, callback, shared, map);
+        krb5.login();
+        krb5.commit();
+        if (!subject.getPrincipals().iterator().next()
+                .getName().startsWith(OneKDC.USER)) {
+            throw new Exception("The authenticated is not " + OneKDC.USER);
+        }
+    }
+
+    static class MyCallback implements CallbackHandler {
+
+        private String name;
+        private char[] password;
+
+        public MyCallback(String name, char[] password) {
+            this.name = name;
+            this.password = password;
+        }
+
+        public void handle(Callback[] callbacks) {
+            for (Callback callback : callbacks) {
+                System.err.println(callback);
+                if (callback instanceof NameCallback) {
+                    System.err.println("name is " + name);
+                    ((NameCallback) callback).setName(name);
+                }
+                if (callback instanceof PasswordCallback) {
+                    System.err.println("pass is " + new String(password));
+                    ((PasswordCallback) callback).setPassword(password);
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/NonMutualSpnego.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6733095
+ * @summary Failure when SPNEGO request non-Mutual
+ */
+
+import sun.security.jgss.GSSUtil;
+
+public class NonMutualSpnego {
+
+    public static void main(String[] args)
+            throws Exception {
+
+        // Create and start the KDC
+        new OneKDC(null).writeJAASConf();
+        new NonMutualSpnego().go();
+    }
+
+    void go() throws Exception {
+        Context c = Context.fromJAAS("client");
+        Context s = Context.fromJAAS("server");
+
+        c.startAsClient(OneKDC.SERVER, GSSUtil.GSS_SPNEGO_MECH_OID);
+        c.x().requestMutualAuth(false);
+        s.startAsServer(GSSUtil.GSS_SPNEGO_MECH_OID);
+
+        Context.handshake(c, s);
+
+        Context.transmit("i say high --", c, s);
+        Context.transmit("   you say low", s, c);
+
+        c.dispose();
+        s.dispose();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/OneKDC.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.security.Security;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import sun.security.krb5.Config;
+
+/**
+ * This class starts a simple KDC with one realm, several typical principal
+ * names, generates delete-on-exit krb5.conf and keytab files, and setup
+ * system properties for them. There's also a helper method to generate a
+ * JAAS login config file that can be used for JAAS or JGSS apps.
+ * <p>
+ * Just call this line to start everything:
+ * <pre>
+ * new OneKDC(null).writeJaasConf();
+ * </pre>
+ */
+public class OneKDC extends KDC {
+
+    // The krb5 codes would try to canonicalize hostnames before creating
+    // a service principal name, so let's find out the canonicalized form
+    // of localhost first. The following codes mimic the process inside
+    // PrincipalName.java.
+    static String localhost = "localhost";
+    static {
+        try {
+            localhost = InetAddress.getByName(localhost)
+                    .getCanonicalHostName();
+        } catch (UnknownHostException uhe) {
+            ;   // Ignore, localhost is still "localhost"
+        }
+    }
+    public static final String USER = "dummy";
+    public static final char[] PASS = "bogus".toCharArray();
+    public static String SERVER = "server/" + localhost;
+    public static String BACKEND = "backend/" + localhost;
+    public static final String KRB5_CONF = "localkdc-krb5.conf";
+    public static final String KTAB = "localkdc.ktab";
+    public static final String JAAS_CONF = "localkdc-jaas.conf";
+    public static final String REALM = "RABBIT.HOLE";
+
+    /**
+     * Creates the KDC and starts it.
+     * @param etype Encryption type, null if not specified
+     * @throws java.lang.Exception if there's anything wrong
+     */
+    public OneKDC(String etype) throws Exception {
+        super(REALM, 0, true);
+        addPrincipal(USER, PASS);
+        addPrincipalRandKey("krbtgt/" + REALM);
+        addPrincipalRandKey(SERVER);
+        addPrincipalRandKey(BACKEND);
+        KDC.saveConfig(KRB5_CONF, this,
+                "forwardable = true",
+                "default_keytab_name = " + KTAB,
+                etype == null ? "" : "default_tkt_enctypes=" + etype + "\ndefault_tgs_enctypes=" + etype);
+        System.setProperty("java.security.krb5.conf", KRB5_CONF);
+        // Whatever krb5.conf had been loaded before, we reload ours now.
+        Config.refresh();
+
+        writeKtab(KTAB);
+        new File(KRB5_CONF).deleteOnExit();
+        new File(KTAB).deleteOnExit();
+    }
+
+    /**
+     * Writes a JAAS login config file, which contains as many as useful
+     * entries, including JGSS style initiator/acceptor and normal JAAS
+     * entries with names using existing OneKDC principals.
+     * @throws java.lang.Exception if anything goes wrong
+     */
+    public void writeJAASConf() throws IOException {
+        System.setProperty("java.security.auth.login.config", JAAS_CONF);
+        File f = new File(JAAS_CONF);
+        FileOutputStream fos = new FileOutputStream(f);
+        fos.write((
+                "com.sun.security.jgss.krb5.initiate {\n" +
+                "    com.sun.security.auth.module.Krb5LoginModule required;\n};\n" +
+                "com.sun.security.jgss.krb5.accept {\n" +
+                "    com.sun.security.auth.module.Krb5LoginModule required\n" +
+                "    principal=\"" + SERVER + "\"\n" +
+                "    useKeyTab=true\n" +
+                "    isInitiator=false\n" +
+                "    storeKey=true;\n};\n" +
+                "client {\n" +
+                "    com.sun.security.auth.module.Krb5LoginModule required;\n};\n" +
+                "server {\n" +
+                "    com.sun.security.auth.module.Krb5LoginModule required\n" +
+                "    principal=\"" + SERVER + "\"\n" +
+                "    useKeyTab=true\n" +
+                "    storeKey=true;\n};\n" +
+                "backend {\n" +
+                "    com.sun.security.auth.module.Krb5LoginModule required\n" +
+                "    principal=\"" + BACKEND + "\"\n" +
+                "    useKeyTab=true\n" +
+                "    storeKey=true\n" +
+                "    isInitiator=false;\n};\n"
+                ).getBytes());
+        fos.close();
+        f.deleteOnExit();
+        Security.setProperty("auth.login.defaultCallbackHandler", "OneKDC$CallbackForClient");
+    }
+
+    /**
+     * The default callback handler for JAAS login. Note that this handler is
+     * hard coded to provide only info for USER1. If you need to provide info
+     * for another principal, please use Context.fromUserPass() instead.
+     */
+    public static class CallbackForClient implements CallbackHandler {
+        public void handle(Callback[] callbacks) {
+            String user = OneKDC.USER;
+            char[] pass = OneKDC.PASS;
+            for (Callback callback : callbacks) {
+                if (callback instanceof NameCallback) {
+                    System.out.println("Callback for name: " + user);
+                    ((NameCallback) callback).setName(user);
+                }
+                if (callback instanceof PasswordCallback) {
+                    System.out.println("Callback for pass: "
+                            + new String(pass));
+                    ((PasswordCallback) callback).setPassword(pass);
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/krb5/auto/basic.sh	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,65 @@
+#
+# Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# @test
+# @bug 6706974
+# @summary Add krb5 test infrastructure
+# @run shell/timeout=300 basic.sh
+#
+
+if [ "${TESTSRC}" = "" ] ; then
+  TESTSRC="."
+fi
+if [ "${TESTJAVA}" = "" ] ; then
+  echo "TESTJAVA not set.  Test cannot execute."
+  echo "FAILED!!!"
+  exit 1
+fi
+
+# set platform-dependent variables
+OS=`uname -s`
+case "$OS" in
+  Windows_* )
+    FS="\\"
+    ;;
+  * )
+    FS="/"
+    ;;
+esac
+
+${TESTJAVA}${FS}bin${FS}javac -d . \
+    ${TESTSRC}${FS}BasicKrb5Test.java \
+    ${TESTSRC}${FS}KDC.java \
+    ${TESTSRC}${FS}OneKDC.java \
+    ${TESTSRC}${FS}Action.java \
+    ${TESTSRC}${FS}Context.java \
+    || exit 10
+${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test || exit 100
+${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test des-cbc-crc || exit 1
+${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test des-cbc-md5 || exit 3
+${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test des3-cbc-sha1 || exit 16
+${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test aes128-cts || exit 17
+${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test aes256-cts || exit 18
+${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test rc4-hmac || exit 23
+
+exit 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/EmptyExtensionData.java	Thu Jan 29 18:33:52 2009 -0800
@@ -0,0 +1,196 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6728126
+ * @summary Parsing Extensions in Client Hello message is done in a wrong way
+ */
+
+import javax.net.ssl.*;
+import javax.net.ssl.SSLEngineResult.*;
+import java.io.*;
+import java.security.*;
+import java.nio.*;
+
+public class EmptyExtensionData {
+
+    private static boolean debug = false;
+
+    private static String pathToStores = "../../../../../../../etc";
+    private static String keyStoreFile = "keystore";
+    private static String trustStoreFile = "truststore";
+    private static String passwd = "passphrase";
+
+    private static String keyFilename =
+            System.getProperty("test.src", "./") + "/" + pathToStores +
+                "/" + keyStoreFile;
+    private static String trustFilename =
+            System.getProperty("test.src", "./") + "/" + pathToStores +
+                "/" + trustStoreFile;
+
+    private static void checkDone(SSLEngine ssle) throws Exception {
+        if (!ssle.isInboundDone()) {
+            throw new Exception("isInboundDone isn't done");
+        }
+        if (!ssle.isOutboundDone()) {
+            throw new Exception("isOutboundDone isn't done");
+        }
+    }
+
+    private static void runTest(SSLEngine ssle) throws Exception {
+        // a client hello message with an empty extension data
+        byte[] msg_clihello = {
+                (byte)0x16, (byte)0x03, (byte)0x01, (byte)0x00,
+                (byte)0x6f, (byte)0x01, (byte)0x00, (byte)0x00,
+                (byte)0x6b, (byte)0x03, (byte)0x01, (byte)0x48,
+                (byte)0x90, (byte)0x71, (byte)0xfc, (byte)0xf9,
+                (byte)0xa2, (byte)0x3a, (byte)0xd7, (byte)0xa8,
+                (byte)0x0b, (byte)0x25, (byte)0xf1, (byte)0x2b,
+                (byte)0x88, (byte)0x80, (byte)0x66, (byte)0xca,
+                (byte)0x07, (byte)0x78, (byte)0x2a, (byte)0x08,
+                (byte)0x9d, (byte)0x62, (byte)0x1d, (byte)0x89,
+                (byte)0xc9, (byte)0x1e, (byte)0x1f, (byte)0xe5,
+                (byte)0x92, (byte)0xfe, (byte)0x8d, (byte)0x00,
+                (byte)0x00, (byte)0x24, (byte)0x00, (byte)0x88,
+                (byte)0x00, (byte)0x87, (byte)0x00, (byte)0x39,
+                (byte)0x00, (byte)0x38, (byte)0x00, (byte)0x84,
+                (byte)0x00, (byte)0x35, (byte)0x00, (byte)0x45,
+                (byte)0x00, (byte)0x44, (byte)0x00, (byte)0x33,
+                (byte)0x00, (byte)0x32, (byte)0x00, (byte)0x41,
+                (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x05,
+                (byte)0x00, (byte)0x2f, (byte)0x00, (byte)0x16,
+                (byte)0x00, (byte)0x13, (byte)0xfe, (byte)0xff,
+                (byte)0x00, (byte)0x0a, (byte)0x01, (byte)0x00,
+                (byte)0x00, (byte)0x1e, (byte)0x00, (byte)0x00,
+                (byte)0x00, (byte)0x16, (byte)0x00, (byte)0x14,
+                (byte)0x00, (byte)0x00, (byte)0x11, (byte)0x6a,
+                (byte)0x75, (byte)0x73, (byte)0x74, (byte)0x69,
+                (byte)0x6e, (byte)0x2e, (byte)0x75, (byte)0x6b,
+                (byte)0x2e, (byte)0x73, (byte)0x75, (byte)0x6e,
+                (byte)0x2e, (byte)0x63, (byte)0x6f, (byte)0x6d,
+                (byte)0x00, (byte)0x23, (byte)0x00, (byte)0x00
+            };
+        ByteBuffer bf_clihello = ByteBuffer.wrap(msg_clihello);
+
+        SSLSession session = ssle.getSession();
+        int appBufferMax = session.getApplicationBufferSize();
+        int netBufferMax = session.getPacketBufferSize();
+
+        ByteBuffer serverIn = ByteBuffer.allocate(appBufferMax + 50);
+        ByteBuffer serverOut = ByteBuffer.wrap("I'm Server".getBytes());
+        ByteBuffer sTOc = ByteBuffer.allocate(netBufferMax);
+
+        ssle.beginHandshake();
+
+        // unwrap the clientHello message.
+        SSLEngineResult result = ssle.unwrap(bf_clihello, serverIn);
+        System.out.println("server unwrap " + result);
+        runDelegatedTasks(result, ssle);
+
+        // one more step, ensure the clientHello message is parsed.
+        SSLEngineResult.HandshakeStatus status = ssle.getHandshakeStatus();
+        if ( status == HandshakeStatus.NEED_UNWRAP) {
+            result = ssle.unwrap(bf_clihello, serverIn);
+            System.out.println("server unwrap " + result);
+            runDelegatedTasks(result, ssle);
+        } else if ( status == HandshakeStatus.NEED_WRAP) {
+            result = ssle.wrap(serverOut, sTOc);
+            System.out.println("server wrap " + result);
+            runDelegatedTasks(result, ssle);
+        } else {
+            throw new Exception("unexpected handshake status " + status);
+        }
+
+        // enough, stop
+    }
+
+    /*
+     * If the result indicates that we have outstanding tasks to do,
+     * go ahead and run them in this thread.
+     */
+    private static void runDelegatedTasks(SSLEngineResult result,
+            SSLEngine engine) throws Exception {
+
+        if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) {
+            Runnable runnable;
+            while ((runnable = engine.getDelegatedTask()) != null) {
+                log("\trunning delegated task...");
+                runnable.run();
+            }
+            HandshakeStatus hsStatus = engine.getHandshakeStatus();
+            if (hsStatus == HandshakeStatus.NEED_TASK) {
+                throw new Exception(
+                    "handshake shouldn't need additional tasks");
+            }
+            log("\tnew HandshakeStatus: " + hsStatus);
+        }
+    }
+
+    public static void main(String args[]) throws Exception {
+
+        SSLEngine ssle = createSSLEngine(keyFilename, trustFilename);
+        runTest(ssle);
+
+        System.out.println("Test Passed.");
+    }
+
+    /*
+     * Create an initialized SSLContext to use for this test.
+     */
+    static private SSLEngine createSSLEngine(String keyFile, String trustFile)
+            throws Exception {
+
+        SSLEngine ssle;
+
+        KeyStore ks = KeyStore.getInstance("JKS");
+        KeyStore ts = KeyStore.getInstance("JKS");
+
+        char[] passphrase = "passphrase".toCharArray();
+
+        ks.load(new FileInputStream(keyFile), passphrase);
+        ts.load(new FileInputStream(trustFile), passphrase);
+
+        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+        kmf.init(ks, passphrase);
+
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
+        tmf.init(ts);
+
+        SSLContext sslCtx = SSLContext.getInstance("TLS");
+
+        sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+
+        ssle = sslCtx.createSSLEngine();
+        ssle.setUseClientMode(false);
+
+        return ssle;
+    }
+
+
+    private static void log(String str) {
+        if (debug) {
+            System.out.println(str);
+        }
+    }
+}